첫 번째 파충류

1923 단어
상하이증권망의 타이틀과 top-topic.Beautifulsoup을 사용했습니다.

과정 중의 문제


웹 페이지 구조가 어렵지 않습니다. 저는 웹 페이지의 모든 큰 제목을 얻을 수 있기를 희망합니다. 바로

탭의 제목과 top-toptic의 모든 제목입니다.

입니다.beautifulsoup에서findAll 함수는 교차 검색을 지원하지 않습니다.
findAll 함수의 매개변수는 다음과 같은 병렬 검색만 지원합니다.
 print(bsObj.findAll("div","h1","a"))

모든 div, h1, a 라벨의 내용을 모두 추출합니다. div에서 h1, h1에서 a의 라벨의 내용이 아닙니다.만약 이렇게 찾아야 한다면,children 함수로도 실현할 수 있다.하지만 위치로 네가 필요로 하는 내용을 정하는 것은 너무 번거롭다.그래서 제 해결책은 따로 찾아서 다시 하는 거예요.그리고 두 번째 문제에 부딪혔어요.
2. 중국어에 대한 비교 방법
Beautifulsoup에서 중국어 인코딩은 유니코드입니다.그러나python에서 문자열이 일치하는지 비교하는 함수입니다.상증망에서 top-list는class 속성 값이 top-area인div에 포함되어 있습니다. 이div에 대해 문자를 추출하면 이 단락의 모든 문자를 추출합니다.이 문자들은 연속적인 내용으로 전체적으로 처리된 것이다.그러니까 안에 있는 글의 내용은

제목

표제 등.그래서 서브열을 찾는 함수로 처리할 수 있다.하면, 만약, 만약...

제목이 탭에 나타나면 삭제합니다. index = Obj_toplist.get_text().find(obj_h1.get_text()) 함수 삭제 Objs_h1.remove(remove_list) 3. 중복된 태그 제거 list에 대해remove로list의 첫 번째 일치하는 요소를 제거할 수 있습니다.하지만 리모브는list의 길이를 1.그래서 두 개의 연속된 위치가 있으면 제거해야 한다.하나 식별이 안돼. 하나 빼고.이렇게 하면 두 개의 연속 위치의 두 번째 원소를 빠뜨릴 것이다.방법은 만나는 중복된 라벨에 대해 먼저 저장한 다음에 한꺼번에 모두 제거하는 것이다. for remove_list in removes_list: Objs_h1.remove(remove_list) 다음은 소스 코드입니다. from urllib.request import urlopen from bs4 import BeautifulSoup import re html = urlopen("http://www.cnstock.com") bsObj = BeautifulSoup(html,"html.parser") Objs_h1 = bsObj.findAll("h1") Objs_toplist = bsObj.findAll("div",{"class":"top-area"}) removes_list = [] #중복된 문자제거[중요 뉴스 처리] for Obj_toplist in Objs_toplist: for obj_h1 in Objs_h1: index = Obj_toplist.get_text().find(obj_h1.get_text()) if index !=-1 : removes_list.append(obj_h1) for remove_list in removes_list: Objs_h1.remove(remove_list) print(중요 뉴스) for Obj_h1 in Objs_h1: print(Obj_h1.get_text()) for Obj_toplist in Objs_toplist: print(Obj_toplist.get_text())

에서 나온 것 같아요.

좋은 웹페이지 즐겨찾기