Beautiful Soup在爬虫中的基本使用语法

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 创建

上一篇:爬虫


下一篇:爬虫基础:BeautifulSoup网页解析库