今天继续给大家介绍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