Python爬虫常用的几种数据提取方式

python爬虫的几种数据提取方式:正则 ,bs4,pyquery,xpath,cssselector。

一,正则

提取数据步骤:创建正则对象-->匹配查找-->提取数据保存

<html>
<div><a href='www.baidu.com'>正则</a></div>
<div>111111</div>
<div><a href='www.baidu1.com'>正则1</a></div>
<div>222222</div>
<div><a href='www.baidu2.com'>正则2</a></div>
<div>333333</div>
<div><a href='www.baidu3.com'>正则3</a></div>
<div>444444</div>
</html>

例:提取所有a标签的文本

pattern = re.compile(r'<a.*?>(.*?)</a>’, re.S)

a_text = re.findall(pattern, html)

知识点:

findall 返回的结果是列表套元组的形式

而search一般要加group(), groups(),

re.S 可以将正则的搜索域不再是一行,而是整个HTML字符串

.*? 非贪婪匹配    .*贪婪匹配

二, Beautifulsoup

obj = BeautifulSoup(html, “lxml”)

BeautifulSoup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象

知识点:

获得标签的某个属性:  .get()
获得标签内部的文字:  .string . strings .stripped_strings .get_text()
.string:  如果一个标签里面没有标签了,那么 .string 就会返回标签里面的内容。如果标签里面只有唯一的一个标签了,那么 .string 也会返回最里面的内容 
.strings: 获取多个内容,返回结果是生成器,需要遍历获取
 .stripped_strings输出的字符串中可能包含了很多空格或空行,使用 .stripped_strings可以去除多余空白内容
 通过css筛选元素: .select()
 .select():返回的是list
遍历文档树:

获取tag的子节点: .contents 返回的是list   .children返回的是listiterator object

PyQuery

    原文作者:凯里潇
    原文地址: https://blog.csdn.net/qq_42331423/article/details/80796683
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞