파이썬 웹 크롤러를 사용하여 --BeautifulSoup4 라이브러리를

라이브러리를 얻고 문자열로 변환하는 HTML 페이지 요청을 사용하면, 더 구문 분석 HTML 페이지 형식에 대한 필요성이 유용한 정보를 추출합니다.

파싱 ​​HTML 및 XML을 처리하기위한 라이브러리 BeautifulSoup4도 (짧은 전후 사용) BS4 라이브러리라고도.

1. 전화

BS4 라이브러리 기지국은 가장 중요한 부문이며, 객체의 각 인스턴스는 HTML 페이지에 해당

필요에서 가져 기지국이 BeautifulSoup로의 학사를 통해 객체를 생성, 클래스를 도입 ()

다음과 같이 코드입니다 :

수입 요청
 에서 BS4의 수입 BeautifulSoup로 
R = requests.get ( " https://www.baidu.com/은 " ) 
r.encoding = " UTF-8 " 
수프 = BeautifulSoup로 (r.text)
 인쇄 (유형 (스프))

 

결과 :

 

 2. 일반적인 특성

BeautifulSoup로 개체가 요소 A]에 의해 제조 할 수있는 태그 (꼬리표) HTML을 각각 포함하는 트리 구조이다 만들었다. <B> 형태로 수득

다음과 같이 일반적인 속성은 다음과 같습니다

머리:

HTML 페이지의 <head> 내용

표제:

HTML 페이지의 제목, <헤드>에서 태그 <제목>

신체:

HTML 페이지 <body> 콘텐츠

피:

첫 번째 페이지의 HTML <P> 내용

문자열 :

HTML 콘텐츠는 모든 문자열 그 웹 페이지에 표시 라벨

stripped_string :

HTML 웹 페이지가 모두 비어 있지 않은 문자열에 표시

 

 

그런 다음 "당신이 알고, 바이."크롤링 바이두의 슬로건 시도

첫째, 우리는 요청에 의해 요청을 설정, 소스를 확인하여 해당 부분을 찾을 수 있습니다

으로는 다음과 같습니다 :

 

 그래서 직접에 <제목> 태그를 호출하여

다음과 같이 코드입니다 :

수입 요청
 에서 BS4의 수입 BeautifulSoup로 
R = requests.get ( " https://www.baidu.com/ " ) 
r.encoding = " UTF-8 " 
수프 = BeautifulSoup로 (r.text) 
제목 = soup.title
 인쇄 (제목 )

 

결과는 다음과 같다 :

 

  3. 라벨의 일반적인 속성

다음과 같이 각 태그 BS4 오브젝트 태그를 예를 들어 쌀 칭한다 또한 목적 일반적인 구조는 다음과 같다 :

<a class="mnav" href="http://www.nuomi.com"> 糯米 </a>를

상기 각괄호 (<>) 태그 이름은 이름 및 다른 상품 바인드합니다 각괄호 사이 문자열의 내용 인

그래서 일반적인 속성 라벨 네 종류로 구분됩니다

이름:

문자열 이름, 라벨

바인드합니다 :

사전 그러한 href가 같은 원래의 페이지 태그의 속성이 모두 포함

contrnts :

내용 태그의 하위 태그 모든 목록

끈:

문자열, 태그는 실제 텍스트의 텍스트, 웹 페이지를 포함

 

문자열은 다음과 같은 원칙을 반환 있도록 때문에 HTML의 태그가 다른 태그에 중첩 될 수 있습니다

① 다른 레이블이 경우, 태그 내의 문자열 특성은 그 내용을 반환

② 내부 태그 태그,하지만 하나 개의 레이블, 문자열 반환 라벨 콘텐츠 안쪽이있는 경우

③ 하나 개 이상의 중첩 내부 레이블이 없음으로 반환되는 경우

 

여전히 바이두, 예를 들어, 첫째 우리는 다음과해야 코드 <A> 라벨의 문자열을 찾을 필요가 :

수입 요청
 에서 BS4의 수입 BeautifulSoup로 
R = requests.get ( " https://www.baidu.com/은 " ) 
r.encoding = " UTF-8 " 
수프 = BeautifulSoup로 (r.text)
 인쇄 (soup.a.string)

 

결과는 다음과 같다 :

 

 ) (find_all 찾기 ()와 전화 (4)

HTML은 같은 특수 라벨은 13 바이두 홈 <A>의 총에서 같은 내용의 많은 수 있지만 값 1 위를 반환

이 시간을 통해 찾아 find_all 찾을 필요가 그래서,이 두 가지 방법은 조건에 따라 트래버스 HTML 문서 내용으로 돌아갑니다

다음과 같이 사용합니다 :

BeautifulSoup.find_all(name,attrs,recursive,string,limit)

name:以标签名字进行搜索,名字用字符串类型表示

attrs:按照标签的属性来搜索,需要列出属性的名字和值,用json方法表示

recursive:设置查找层次,只查找当前标签的西一层时使用recursiv=false

string:按照关键字查找string属性内容,采用string=开始

limit:返回结果个数,默认全部

至于find()使用方法如find_all()相同,

BeautifulSoup.find_all(name,attrs,recursive,string)

区别在于find()只搜索第一个结果,find_all()返回所有结果。

 

我们尝试来通过find_all()来获取所有含有“百度”这一关键词的标签

首先需要调用re库,re是python的标准库可以采用compile()对字符串的检索

所以代码如下:

import requests
import re
from bs4 import BeautifulSoup
r=requests.get("https://www.baidu.com/")
r.encoding="utf-8"
soup=BeautifulSoup(r.text)
w=soup.find_all(string=re.compile("百度"))
print(w)

 

结果如下:

 

 

 

 

 

 

 

 

 

 

 

추천

출처www.cnblogs.com/lyy135146/p/12005188.html