最近在学习Python爬虫,将自己的所学的一点东西用文章记录下来

一. 正则数据处理

首先引入re模块

import re

例如以下待处理的数据

<div class="thumb">

<a href="/article/123934388" target="_blank">
<img src="//pic.qiushibaike.com/system/pictures/12393/123934388/medium/KOSEBE8GS8TBYBTC.jpg" alt="糗事#123934388" class="illustration" width="100%" height="auto">
</a>
</div>```

1.要将src的属性值取出 首先建立正则表达式

ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'```

2.取出数据

img_src_list = re.findall(ex,response,re.S)

PS:
①要注意,这里取出的是一个列表形式,可以使用for循环将其取出
②其中的response为上面的待处理数据
③re.S单行匹配 re.M多行匹配 re.I 忽略大小写

二. xpath数据处理

引入模块

from lxml import etree

以下为待处理数据

    <div class="song">
        <p>李清照</p>
        <p>王安石</p>
        <p>苏轼</p>
        <p>柳宗元</p>
        <a href="http://www.song.com/" title="赵匡胤" target="_self">
            <span>this is span</span>
        宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>
        <a href="" class="du">总为浮云能蔽日,长安不见使人愁</a>
        <img src="http://www.baidu.com/meinv.jpg" alt="" />
    </div>

1.首先实例化一个etree对象,将被解析的数据加载到对象中

tree = etree.parse('/Users/wuxiuye/Desktop/Python/test.html')

2.对其进行数据处理
①如果要取出“src=”后的链接,即取出一个属性值

r = tree.xpath('//div[@class="song"]/img/@src')
print(r)

②如果要取出李清照,即取出一个文本

r = tree.xpath('//div[@class="song"]/p/text()')
print(r)

如果这样运行,r是一个列表,其中列表中的数据是

['李清照', '王安石', '苏轼', '柳宗元']

但如果把代码修改成

#/text()获取标签中直系内容
#//text()获取标签中所有内容
r = tree.xpath('//div[@class="song"]/p[1]/text()')[0]
print(r)

r就是李清照
PS:如果要一次性取多个数据 两个表达式直接用|连接

a_list = tree.xpath('//div[@class="bottom"]/ul/li/a | //div[@class="bottom"]/ul/div[2]/li/a')

如果喜欢就给点个赞吧!!

最后修改:2022 年 11 月 08 日
如果觉得我的文章对你有用,请随意赞赏