爬虫解析库
在爬取豆瓣电影中使用的是正则表达式,但是正则表达式比较麻烦,除了正则以外还有 LXML、BeautifulSoup、PyQuery 等多个解析库,这些解析库相比正则更为简便,能够有效提高爬虫的爬取效率。
XPATH
简介
定义
XPath,全称 XML Path Language,即 XML 路径语言,它是一门在XML文档中查找信息的语言。XPath 最初设计是用来搜寻XML文档的,但是它同样适用于 HTML 文档的搜索。
解析XML的一种语言(HTML其实是XML的子级),广泛应用于HTML的解析;
几乎所有的编程语言都支持XPath,包括JAVA和C 语言
所以在做爬虫时,我们完全可以使用 XPath 来做相应的信息抽取,本节我们来介绍一下 XPath 的基本用法。
优点
说道XPath是门语言,不得不说它所具备的优点:
1) 可在XML中查找信息
2) 支持HTML的查找
3) 通过元素和属性进行导航
XPath常用规则
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从当前节点选取直接子节点 |
// | 从当前节点选取子孙节点 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取属性 |
关于etree模块的介绍:https://blog.csdn.net/u012067766/article/details/79903455
主要用法:
层级:/直接子级、//跳级
属性:@属性访问
函数:contains()、text()
实例
爬取搜狗首页上的文字
import requests from lxml import etree res=requests.get('https://www.sogou.com/') elment=etree.HTML(res.text) xpath_reg='//div[@class="top-nav"]//a/text()' li='//div[@class="ft-info"]//a/text()' results_1=elment.xpath(xpath_reg) results_2=elment.xpath(li) print(results_1) print(results_2)
BeautifulSoup
简介
BeautifulSoup 就是 Python 的一个 HTML 或 XML 的解析库,我们可以用它来方便地从网页中提取数据。
例子
爬取豆瓣书籍
from bs4 import BeautifulSoup import requests response=requests.get('https://book.douban.com/') soup=BeautifulSoup(response.text,"html.parser") items=soup.findAll('li') for item in items: print(item.text)
糗事百科:
参考:https://www.jianshu.com/p/9c266216957b
from bs4 import BeautifulSoup import requests headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'} response=requests.get('https://www.qiushibaike.com/hot/',headers=headers) soup=BeautifulSoup(response.text,"lxml") items=soup.find_all(class_="article block untagged mb15 typs_hot") for item in items: joke=item.span.get_text() print(joke.strip()) print('----')
PyQuery