첫 번째 파충류
과정 중의 문제
웹 페이지 구조가 어렵지 않습니다. 저는 웹 페이지의 모든 큰 제목을 얻을 수 있기를 희망합니다. 바로
탭의 제목과 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())에서 나온 것 같아요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
print(bsObj.findAll("div","h1","a"))
표제 등.그래서 서브열을 찾는 함수로 처리할 수 있다.하면, 만약, 만약...
제목이 탭에 나타나면 삭제합니다.
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())에서 나온 것 같아요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.