크롤러 라이브러리 요청 및 BeautifulSoup의 기본 사용

크롤러의 데이터 획득은 일반적으로 두 단계로 나눌 수 있습니다.

  1. 웹 페이지 가져 오기

주로 사용 requests(웹 페이지 요청 보내기) selenium(브라우저를 사용하여 웹 페이지에 액세스)

  1. 웹 페이지 구문 분석

주로 사용 BeautifulSoup

다음은 위의 세 가지 라이브러리의 사용을 간략하게 소개합니다.

요청은 URL에서 페이지를 가져옵니다.

pip install requests설치 사용

import requests참조 사용

빠른 사용

import requests
r = requests.get('http://zoollcar.top') # 发送请求到url
print(r.text) # 输出获取到的页面文本

7 가지 주요 요청 방법

형식 사용 requests.ge(url, params=None, **kwargs)

방법 풍모
requests.request() 다른 모든 방법에 대한 기본 방법
requests.get() URL의 내용 가져 오기
requests.head() URL 위치 자원의 응답 메시지 보고서 획득, 즉 자원의 헤더 정보 획득 요청
requests.post() URL 위치에서 리소스 요청 후 새 데이터 첨부
requests.put() URL 위치에 리소스를 저장하도록 요청하고 원래 URL 위치의 리소스를 덮어 씁니다.
requests.patch() URL 위치에서 리소스의 부분 업데이트, 즉 리소스 콘텐츠의 일부 변경을 요청합니다.
requests.delete() URL 위치에 저장된 리소스 삭제 요청

선택적 매개 변수 **kwargs

매개 변수 기술
매개 변수 url에 매개 변수로 추가 된 사전 또는 바이트 시퀀스
데이터 요청의 내용으로 사전, 바이트 시퀀스 또는 파일 객체
json 요청 내용으로 JSON 형식의 데이터
헤더 사전, HTTP 사용자 정의 헤더
쿠키 사전 또는 CookieJar, 요청의 쿠키
인증 튜플, HTTP 인증 기능 지원
파일 사전 유형, { 'file': open ( 'data.xls', 'rb')}
타임 아웃 시간 초과 기간 (초) 설정
프록시 사전 유형, 액세스 프록시 서버 설정, 로그인 인증 증가 가능
allow_redirects True / False, 기본값은 True, 리디렉션 스위치
True / False 스트림 기본값은 True이며 콘텐츠를 즉시 다운로드합니다.
참 / 거짓 확인 기본값은 True, 인증 SSL 인증서 스위치입니다.
인증서 로컬 SSL 인증서 경로

브라우저를 통한 Selenium 액세스 URL

pip install selenium설치 사용

from selenium import webdriver참조 사용

빠른 사용

from selenium import webdriver # 引入
driver = webdriver.Firefox() # 关联到本地火狐浏览器
driver.get("http://zoollcar.top") # 用浏览器打开网页
a = driver.find_element_by_css_selector('.site-title') # 通过css选择器选择元素
print(a.text) # 访问元素内容

!! 것을 참고 하면된다 해당 드라이버 파이어 폭스 브라우저를 설치해야 geckodriver.exe구글이되는 chromedriver.exe시스템 경로가 들어있는 디렉토리에 넣어

다양한 선택기

선택자
find_elements_by_css_selector('div.edit') CSS에 따라 선택
find_elements_by_xpath('//div[@class='edit']') xpath에 따라 선택
find_elements_by_id('id') id 속성에 따라 선택
find_elements_by_name('name') 이름 속성에 따라 선택
find_elements_by_link_text('www.zoollcar.top') 주소 링크에 따라 선택
find_elements_by_tag_name('h1') 요소 이름으로 선택
find_elements_by_class_name('edit') 클래스에 따라 선택

이 목록은
첫 번째 목록이 elements교체되는 한 if 와 일치합니다.element

CSS, 그림, js 표시 및 실행 제어

from selenium import webdriver # 引入
fp = webdriver.FirefoxProfile() # 引入火狐配置
fp.set_preference("permissions.default.stylesheet",2) # 禁用CSS
fp.set_preference("permissions.default.image",2) # 禁用 图片显示
fp.set_preference("javascript.enabled",False)  # 禁用js 测试不可用(不知道为什么)
driver = webdriver.Firefox( firefox_profile = fp ) # 关联到本地火狐浏览器

BeautifulSoup은 웹 페이지 문자열 분석을 얻습니다.

빠른 사용

import requests
from bs4 import BeautifulSoup
r = requests.get('http://zoollcar.top')
soup = BeautifulSoup(r.text,'html.parser') # 解析获取到的文本
print(soup.h1.string) # 输出第一个h1标签的文本

텍스트를 구문 분석 트리로 전환

라이브러리 from bs4 import BeautifulSoup
bs4 라이브러리를 소개하면 모든 HTML 입력이 utf-8 인코딩으로 바뀝니다.

사용 soup = BeautifulSoup(html,'html.parser')내장되어 표준 HTML 구문 분석 html로 문자열 구문 분석,
다른 규칙을 준수, 또한 다음과 같은 양식을 사용 할 수 있습니다
soup = BeautifulSoup(html,'lxml')
soup = BeautifulSoup(html,['lxml','xml']])
soup = BeautifulSoup(html,'html5lib')

파싱 ​​후 나무 모양의 객체 인 bs4.BeautifulSoup 클래스 객체를 얻게되며 각 태그를 추출 할 수 있습니다. 주요 추출 방법은 다음과 같습니다.

  1. 트리 검색
  2. 나무를 가로 질러
  3. CSS 선택기

접근 및 검색 방법

콘텐츠 액세스

soup.h1
soup.h1.name레이블이 h1 인 첫 번째 레이블 찾기 레이블 이름
soup.h1.attrs레이블 속성
soup.h1.string레이블 텍스트

두 가지 유형의 문자열을 반환합니다.
NavigableString 비 주석 문자열
주석 주석 문자열

soup.h1.prettify ()는 캐리지 리턴과 공백을 사용하여 인간 친화적 인 방식으로 html을 표시합니다.

검색 방법

soup.find_all (name, attrs, recursive, string, ** kwargs) 특정 콘텐츠 찾기! !

name 태그 검색 이름 검색
속성 : 태그 속성 값 검색 , 레이블링 가능 속성 검색 id = link1
재귀 : 모든 하위 항목 검색 여부, 기본값 True
문자열 : 태그 콘텐츠 검색

soup.find_all ()의 약어는 soup ()입니다.

방법 풍모
<soup>.find() 하나의 결과 만 검색 및 반환
<soup>.find_parents() 상위 노드에서 검색하고 목록 유형을 반환합니다.
<soup>.find_parent() 在先辈节点中返回一个结果
<soup>.find_next_siblings() 在后续平行节点中搜索,返回列表类型
<soup>.find_next_sibling() 在后续平行节点中返回一个结果
<soup>.find_previous_siblings() 在前序平行节点中搜索,返回列表类型,同
<soup>.find_previous_sibling() 在前序平行节点中返回一个结果

还可以使用css检索方法
使用 <soup>.select('cssSelectName') 检索到结果

遍历的方法

内容遍历方法

方法 功能
下行遍历
.contents 子节点列表
.children 子节点的迭代类型
.descendants 子孙节点的迭代类型,包含所有子孙节点
上行遍历
.parent 节点的直属父标签
.parents 节点先辈标签的迭代类型
平行遍历
.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

추천

출처blog.csdn.net/zoollcar/article/details/86299697