Python 파충류 의 두 가지 해석 방법 과 네 가지 파충류 의 실현 과정
기초 파충류 의 고정 패턴
필자 가 여기 서 말 하 는 기초 파충류 란 비동기 로드,인증 코드,대리 등 고급 파충류 기술 을 처리 할 필요 가 없 는 파충류 방법 을 말한다.일반적으로 기초 파충류 의 두 가지 요청 쿠 르 리 브 와 요청 중 requests 는 보통 대부분의 사람들 에 게 사랑 을 받 습 니 다.물론 입 니 다. urllib 도 기능 이 완비 되 어 있다.양 대 해석 라 이브 러 리 Beautiful Soup 은 강하 기 때문에... HTML 문서 분석 기능 으로 인 기 를 끌 고 있 으 며,또 다른 분석 라 이브 러 리 입 니 다. lxml 코 디 xpath 표현 식 을 바탕 으로 효율 도 향상 되 었 습 니 다.기초 파충류 의 경우 두 가지 요청 창고 와 두 가지 해석 창고 의 조합 방식 은 개인의 선 호 에 따라 선택 할 수 있다.
필자 가 즐겨 사용 하 는 파충류 조합 도 구 는:
필 자 는 텐 센트 뉴스의 첫 페이지 의 뉴스 정보 캡 처 를 예 로 들 었 다.
첫 페이지 모양 은 다음 과 같 습 니 다:
예 를 들 어 우 리 는 모든 뉴스의 제목 과 링크 를 캡 처 하여 사전 의 구조 로 조합 하여 인쇄 하고 싶다.우선 HTML 소스 코드 를 보고 뉴스 제목 정보 조직 형식 을 확인한다.
대상 정보 가 em 탭 에 존재 할 수 있 습 니 다. a 탭 에 있 는 텍스트 와 href 속성 중.직접 이용 가능 requests 라 이브 러 리 구조 요청 및 사용 BeautifulSoup 혹은... lxml 분석.
방식 1:requests+ BeautifulSoup + select css 선택 기
# select method
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
url = 'http://news.qq.com/'
Soup = BeautifulSoup(requests.get(url=url, headers=headers).text.encode("utf-8"), 'lxml')
em = Soup.select('em[class="f14 l24"] a')
for i in em:
title = i.get_text()
link = i['href']
print({' ': title,
' ': link
})
일반적인 처리 방식 입 니 다.캡 처 효 과 는 다음 과 같 습 니 다.방식 2:requests+ BeautifulSoup + find_all 정보 추출
# find_all method
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
url = 'http://news.qq.com/'
Soup = BeautifulSoup(requests.get(url=url, headers=headers).text.encode("utf-8"), 'lxml')
em = Soup.find_all('em', attrs={'class': 'f14 l24'})for i in em:
title = i.a.get_text()
link = i.a['href']
print({' ': title,
' ': link
})
같은 requests+ Beautiful Soup 의 파충류 조합 이지 만 정보 추출 에 사용 되 었 습 니 다. find_all 방식.효 과 는 다음 과 같 습 니 다:방식 3:requests+ lxml/etree + xpath 표현 식
# lxml/etree method
import requests
from lxml import etree
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
url = 'http://news.qq.com/'
html = requests.get(url = url, headers = headers)
con = etree.HTML(html.text)
title = con.xpath('//em[@class="f14 l24"]/a/text()')
link = con.xpath('//em[@class="f14 l24"]/a/@href')
for i in zip(title, link):
print({' ': i[0],
' ': i[1]
})
lxml 라 이브 러 리 에 있 는 etree 모듈 을 분석 한 후 사용 합 니 다. xpath 표현 식 으로 정보 추출 을 진행 하 는데 효율 이 약간 높다 BeautifulSoup + select 방법.여기 서 두 목록 의 조합 을 채 택 했 습 니 다. zip 방법.python 학습 교류 군:125240963 효 과 는 다음 과 같 습 니 다:방식 4:requests+ lxml/html/fromstring + xpath 표현 식
# lxml/html/fromstring method
import requests
import lxml.html as HTML
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
url = 'http://news.qq.com/'
con = HTML.fromstring(requests.get(url = url, headers = headers).text)
title = con.xpath('//em[@class="f14 l24"]/a/text()')
link = con.xpath('//em[@class="f14 l24"]/a/@href')
for i in zip(title, link):
print({' ': i[0],' ': i[1]
})
방법 3 과 유사 합 니 다.분석 에 만 lxml 라 이브 러 리 를 사 용 했 습 니 다. html.from string 모듈.캡 처 효 과 는 다음 과 같 습 니 다:많은 사람들 이 파충류 가 파악 하기 어렵다 고 생각한다.지식 이 너무 많 기 때문에 전단 을 알 아야 하고 python 의 숙련 이 필요 하 며 데이터 베 이 스 를 알 아야 하 며 정규 표현 식,XPath 표현 식 등 은 말 할 필요 도 없다.사실 간단 한 웹 페이지 의 데이터 캡 처 에 대해 서 는 몇 가지 캡 처 방안 을 시도 해 보 세 요.하 나 를 보면 열 을 알 수 있 고 python 파충류 에 대해 서도 깊이 이해 할 수 있 습 니 다.이대로 가면 각종 홈 페이지 구조 에 대해 섭렵 을 했 고 자연 경험 이 풍부 하 며 도랑 이 된다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 Python 파충류 의 두 가지 해석 방법 과 네 가지 파충류 의 실현 과정 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.