六月底就开始停更新博文的原因是“期末周+疯狂忙专利”,暑假开始,今天刚好七月半,更完第二部分对urllib及request使用部分的博文,就开启了第三部分数据解析的新内容学习。第三部分主要是数据解析的内容,也就是建立在爬取数据后进行处理。
数据解析三个工具-Xpath|BeautifulSoup4|正则表达式
1-xpath简介以及工具安装
xpath(XML Path Language) 在XML和HTML文档中查找信息的语言,可用来在两种文档中对元素和属性进行遍历。
XPath开发工具:1. chrome插件 XPath Helper; 2.Firefox插件XPath checker
安装过程中出现了一点问题,浏览器无法成功安装这个扩展,这里找到两个链接:1.下载;2.安装。第一个是一个chrome相关插件及浏览器版本的网站,第二个是出现的安装不成功解决办法的合集。
上面是chrome安装好后的截图,下图是火狐浏览器的。
经历一番折腾,终于安装成功,接下来开始学习语法。
语法
选取节点-通过路径表达式来选取XML文档中的节点和节点集,这些路径表达式与常规的表达式相似。
表达式 描述 实例 结果,笔记截图如下
跟着老师做联系,熟悉“/|//|@|[]” 的用法
包括几种路径表达式的用法,进行了练习。
讲完精确匹配,老师开始讲模糊匹配,当有两个class名字时,选择前者,
还有更多的 运算符,通过符号的选取连接,组合成需要的表达式。随后老师对相关语法用法进行了介绍,迅速过了一遍,可以在后面练习使用过程中再重复记忆。
接下来是第三个视频。用lxml解析html代码和文件。
lxml库
HTML/XML的解析器-解析和提取HTML/XML数据,和正则一样(C语言实现),Python HTML/XML解析器,+XPath语法→定位特定元素及节点信息。官方文档。需要安装C语言库。
视频中以腾讯招聘网页举例,但再去下载静态网页时候发现换成script标签引用的资源文件了,同样的,找了百度阿里以及字节跳动等互联网公司招聘页面发现都换了,反爬or安全起见。这里找到苏宁招聘页面作为案例。
其中在几个目标任务实现过程中发现一个问题,在对页面中所有class=section-detail的div元素无法解析,于是选取class=caption的span标签作为对照,能够解析,构造的解析方式没问题。这里查了一下网上用法,
取多个class属性值的元素,可用如下的表达式:
xpath('//div[contains(@class,"section-detail")]') #取所有class为section-detail的元素
或
xpath('//div[contains(@class,"section-detail") and contains(@class,"clearfix")]') #取class有section-detail和clearfix的元素
可以看到,确实抓取到了,同时附上另一种解析:利用contains函数
接下来是对于元素中信息的获取,点击后确能访问苏宁不同职位的页面。社会招聘-职位详情
lxml结合xpath注意事项:
1.使用xpath语法,应该使用Element.xpath,返回为列表
2.获取某标签属性
href = tr.xpath(".//a/@href")[0]
3. 获取文本,是通过‘xpath’中的‘text()’函数,如下:
time = tr.xpath("./td[4]/text()")[0]
4.如果需要在标签下执行xpath进一步提取数据,应该子啊//前使用“.”来代表是在当前元素下获取。
好,理论知识部分【lxml和xpath的结合】已经更完,下部分是实战,豆瓣和电影天堂的爬取。