python 正则表达式和Xpath清洗数据总结

爬虫数据清洗,必然会使用到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提取

 

    以后用的比较多再补上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章