最近在学习Python爬虫,将自己的所学的一点东西用文章记录下来 ## 一. 正则数据处理 首先引入re模块 ```python import re ``` 例如以下待处理的数据 ```php ``` ``` 1.要将src的属性值取出 首先建立正则表达式 ```python ex = '.*?'``` ``` 2.取出数据 ```python img_src_list = re.findall(ex,response,re.S) ``` PS: ①要注意,这里取出的是一个列表形式,可以使用for循环将其取出 ②其中的response为上面的待处理数据 ③re.S单行匹配 re.M多行匹配 re.I 忽略大小写 ## 二. xpath数据处理 引入模块 ```python from lxml import etree ``` 以下为待处理数据 ```python 李清照 王安石 苏轼 柳宗元 this is span 宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱 总为浮云能蔽日,长安不见使人愁 ``` 1.首先实例化一个etree对象,将被解析的数据加载到对象中 ```python tree = etree.parse('/Users/wuxiuye/Desktop/Python/test.html') ``` 2.对其进行数据处理 ①如果要取出“src=”后的链接,即取出一个属性值 ```python r = tree.xpath('//div[@class="song"]/img/@src') print(r) ``` ②如果要取出李清照,即取出一个文本 ```python r = tree.xpath('//div[@class="song"]/p/text()') print(r) ``` 如果这样运行,r是一个列表,其中列表中的数据是 ```python ['李清照', '王安石', '苏轼', '柳宗元'] ``` 但如果把代码修改成 ```python #/text()获取标签中直系内容 #//text()获取标签中所有内容 r = tree.xpath('//div[@class="song"]/p[1]/text()')[0] print(r) ``` r就是李清照 PS:如果要一次性取多个数据 两个表达式直接用|连接 ```python a_list = tree.xpath('//div[@class="bottom"]/ul/li/a | //div[@class="bottom"]/ul/div[2]/li/a') ``` 如果喜欢就给点个赞吧!! 最近在学习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 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏 文章引用 反向引用 Loading... 暂未引用其他文章 暂未被其它文章引用 上一篇 发表评论 取消回复 使用cookie技术保留您的个人信息以便您下次快速评论,继续评论表示您已同意该条款 评论 * 私密评论 名称 * 🎲 邮箱 * 地址 发表评论 提交中...