Python爬虫进行xpath解析实战

今天继续给大家介绍Python爬虫相关知识,本文主要内容是Python爬虫进行xpath解析实战。

一、需求分析

在之前的文章:Python爬虫进行正则数据解析实战Python爬虫进行BeautifulSoup数据解析实战中,我们分别使用正则表达式和BeautifulSoup库对爬虫爬取下来的网页进行数据解析。
和以上两篇文章需求类似,我们还是对一篇CSDN博客:https://blog.csdn.net/weixin_40228200/article/details/128438620,进行爬取并下载该博客内的所有图片。但是我们本文采取xpath的方式进行提取,因此我们用浏览器打开该文章后,可以直接使用浏览器的开发者工具复制图片的xpath地址,过程如下所示:
在这里插入图片描述
复制后的xpath表达式如下所示:

//*[@id="content_views"]/p[3]/img

注意,这样的写法采集出来的是一个img标签,因为这里使用了索引定位,如果我们想使用xpath表达式提取出所有的img标签,那么就需要将上述xpath表达式修改为如下形式:

//*[@id="content_views"]/p/img

二、代码实战

针对上述需求,我们进行编码如下:

import requests
from lxml import etree
import os
import time

headers={
    
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"}
url="https://blog.csdn.net/weixin_40228200/article/details/128438620"
page_text=requests.get(url=url,headers=headers).text
tree=etree.HTML(page_text)
img_src_list=tree.xpath('//*[@id="content_views"]/p/img/@src')
i=1
if not os.path.exists("./csdnIMG3"):
    os.mkdir("./csdnIMG3")
for img_src in img_src_list:
    img_data=requests.get(url=img_src,headers=headers).content
    img_name="./csdnIMG3/"+str(i)+".png"
    fp=open(img_name,'wb')
    fp.write(img_data)
    fp.close()
    i+=1
    time.sleep(1)

上述代码与之前文章中的代码逻辑相同,只不过采取了xpath表达式进行数据提取和解析而已,在这里就不对上述代码进行赘述了,如果对上述代码存在困惑,欢迎在评论区提问。

三、效果检验

上述代码执行结果如下所示:
在这里插入图片描述
从上图可以看出,我们运行上述代码后,成功的通过xpath解析到了img标签数据。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/128553764