爬虫数据清洗,必然会使用到re、xpath、css。目前我总结前面两个,有时间再补上、
下面内容都是基于Python
一、正则表达式
前提包:import re
我正则技能差,因为一般只使用:
.*? 然后左右两边写上会出现的信息
r"\"匹配.*?又是无用的信息\""
最后通过字符串的 replace 把没用的信息再替换。
这个方法几乎解决了60%我以上的信息清洗。然后再结合上面的一些语法大概能构建自己想要的数据re。
题外话(正则表达式然后想起了字符串匹配,还有没学的后缀自动机23333
二、xpath
xpath可以直接定位都压面的某个位置,然后直接提取出你需要的文本,然后构造的路径就跟着页面往下走就好。
有个比较好的就是可以直接室友浏览器直接导出xpath路径,坑也在这里!
注意点:
1、有些页面显示是浏览器自动补全信息之后的,页面经过js或者其他东西改变了可能和responese不同(例如微信的某些页面所以不要盲目相信浏览器导出的xpath,更多观察。
2、不同地方的xpath可能有点小不同、
在scrapy中可以直接使用xpath,、
需要导入的包:from lxml import html
但是在requests的返回数据中需要经过: html.fromstring(response.text) 处理
然后才能正常的使用xpath
xpath和re结合简直高效清洗数据。
一些常用的信息:
Xpath的到的也是个selectors ,可以继续使用xpath提取
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。
i.extract() //把xpath获得的数据提取出来,获得的是数组信息
text() 使用:".//a/text()" 获得text的内容
@href //获得url
错误报告:Element h2 at 0x194853653c8>
原因 :你获得的是他的属性值,而不是内容。
三、CSS提取
以后用的比较多再补上。