Python爬虫-BeautifulSoup
“美丽汤”的爱恨
前边说偏爱xpath,在于操作简单,解析速度较快。但不可否认:BeautifulSoup比xpath稳定。但凡网页的标签顺序发生变化(增删改),基于xpath规则的提取方式极大可能就此失效,这样一来不得不“右键检查元素”,周而复始的修改xpath规则。而“美丽汤”提供了多种寻找标签方法,以图使用者达到最佳“确定标签”的目的,尽最大努力在网页发生改变的同时,旧代码仍然畅通无阻的运行。
可是成也萧何败萧何,考虑太多,“美丽汤”不得不显得“臃肿”,成为三个中解析速度中的最慢。然而比起令人生畏的正则,许多人也只好认了:“慢就慢吧”。
《Python网络数据采集》书中提到,BeautifulSoup一名源于《爱丽丝梦游仙境》里的同名诗歌。就突然好想去看,我说有空的话。
使用
关于环境安装的帖子网络上很容易找到,这里不提。
导包:from bs4 import BeautifulSoup
指定解析方式:soup = BeautifulSoup(response.text, "lxml")
或者页面写入本地,打开本地文件解析:soup = BeautifulSoup(open("xxxx"), "lxml")
爱丽丝文档示例
在一定的操作中以此范例文档试验(这是一个标签部分残缺的文档)
格式化输出:print(soup.prettify())
效果:
可以看到,经过处理后,原示例的残缺部分被填充完整。所以我们应该针对处理之后的示例采取相应的提取措施
标签
soup.a
返回第一个a标签