解析提取网页数据用的库

1
2
3
4
5
6
7
8
9
10
from bs4 in BeautifulSoup  # 引入bs库。换代可能变,记得看文档

find (tag, attributes, recursive, text, keywords) # 这是官方文档全的方法
find_all (tag, attributes, recursive, text, keywords) # 这是官方文档全的方法


find_all()

变量 = BeautifulSoup( 要解析的字符串, ' 解释器 ' )
# 解释器,用到一个内置库:html.parser 这个不是唯一的,是比较简单的

实例讲解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import requests 
from bs4 import BeautifulSoup

# 请求&转换成字符串数据
url = ' '
res = requests.get(url)
htmltxt = res.text

# 解析
soup = BeautifulSoup(htmltxt,'html.parser') # 把网页解析为BeautifulSoup对象
# 提取
soup.find(标签,属性 ) # find( )寻找首个满足条件的数据
soup.find_all(标签,属性 ) # find( )寻找所有满足条件的数据

例:
soup.find('div') # 提取首个div
soup.find('div', calss_='box') #提取div 首个box类

soup.find_all('div') # 提取所有div
soup.find_all('div', calss_='box') #提取所有div 的 box类

# Tag对象的三种常用属性与方法
Tag.find( ) 和Tag.find_all( ) # 提取Tag中的Tag
Tag.text # 提取Tag中的文字
Tag['属性名'] # 输入参数:属性名,可以提取Tag中这个属性的值

例:
souptxt = soup.find_all('div') # 提取的div赋值给souptxt

for tagtxt in souptxt:
htxt = tagtxt.find('h2')
# 在列表中的每个元素里,匹配标签<h2>提取出数据
titletxt = tagtxt.find(class_='title')
# 在列表中的每个元素里,匹配属性calss_='title'提取出数据

print( htxt.text , title.text, title['href'])
# 打印提取出的数据,title['href']是打印出href的值