Beautiful Soup 是什么
Beautiful Soup是python 的一个HTML 或 XML的解析库,借助网页的结构和属性特征来解析网页,便于用户抓取数据。
Beautiful Soup能够自动将输入的文档转化为Unicode,输出的文档转换为UTF-8,这大大提高了文档提取的效率。
选择相应信息
基本用法如下
BeautifulSoup(markup, 'lxml')
from bs4 import BeautifulSoup
import requests
url = 'https://github.com/github'
# 构造一个html文档
r = requests.get(url).text
soup = BeautifulSoup(r, 'lxml')
# prettify 可以把要解析的字符串以标准的HTML输出
print(soup.prettify)
# 输出HTML中title的内容
print(soup.title.string)
选择相应的节点,直接使用soup.title/soup.head/soup.p等,即可获取信息。需要注意的是soup.p,只能获取第一个节点的p。
from bs4 import BeautifulSoup
import requests
url = 'https://github.com/github'
# 构造一个html文档
r = requests.get(url).text
soup = BeautifulSoup(r, 'lxml')
# prettify 可以把要解析的字符串以标准的HTML输出
print(soup.prettify)
# 输出title
print(soup.title)
# 输出HTML中title文本的值
print(soup.title.string)
# 输出head
print(soup.head)
# 输出节点p
print(soup.p)
方法选择器
面对复杂的网页结构,采用属性来选择比较麻烦,这就需要使用find_all(),find()进行选择了。
find_all()
它的API如下
find_all(name, attrs, recursive, text, **kwargs)
表示:
name:根据节点名查询
attrs:通过传入属性查询
text:用来匹配节点的文本
find()的用法与find_all()的用法一样,区别是fin()返回的是单个元素,find_all()返回的是所有元素。
基本语法:
from bs4 import BeautifulSoup
import requests
url = 'https://github.com/github'
# 构造一个html文档
r = requests.get(url).text
soup = BeautifulSoup(r, 'lxml')
# 根据节点名查询
print(soup.find_all(name='ul'))
# 通过传入属性查询
print(soup_find_all(attrs={'id': 'list-1'}))
print(soup_find_all(attrs={'name': 'elements'}))
# 用来匹配节点的文本
print(soup.find_all(text=re.compile('link')))
CSS选择器
如果对CSS选择器熟悉的话,可以使用select进行选择。
此文不做说明,更多CSS信息请查看这里。
参考资料
《python3 网路爬虫开发实战》 崔庆才著
Change Log
20201201 创建