爬虫案例分析和可视化

核心提示python一大用途就是爬取网页数据,这篇我们来用python爬取网页图片数据,其中网页可以分为静态网页和动态网页,其中静态网页我们一般用requests库,动态网页我们需要用到selenium库,先来看静态网页爬取。1:静态网页爬取我们先

python的一大用途是抓取网页数据。在本文中,我们使用python来抓取网页图像数据,其中网页可分为静态网页和动态网页。我们通常对静态网页使用请求库,对动态网页使用selenium库。我们先来看静态网页抓取。

1元:静态网页抓取

让我们打开一个网址不害羞的网页|一个真实的图片分享交友社区。打开后,我们看到以下内容:

单击下一页,我们看到URL变成了:

所以网站的变化规律是每个页面在基本地址“https://www.buxiuse.com/”后面加上page= number,我们抓取前面60元页面的图片。按F12查看元素,我们可以看到图片元素的标签是:

图片地址在img标签里面,且在src属性值里面,那么可以先定位到img标签,再提取src属性的值便可获取图片地址,我们用到xpath库来提取元素,那么提取图片地址的写法便可以是如果图像地址在img标签中,在src属性值中,可以先定位img标签,然后提取src属性值得到图像地址。我们使用xpath库来提取元素,所以提取图像地址的写法可以是

//img/@src,其中“//”表示在任意位置查找img标签,后面的'/'表示img的子节点,'@src'表示取src属性的值,在这里就是图片的地址。//img/@搜狗翻译还准备了精彩好礼a粉丝在这个夏天给你降温。详情请点击src,其中“//”表示在任意位置查找img标签,下面的“/”表示IMG的子节点,“@搜狗翻译还准备了精彩好礼a粉丝在这个夏天给你降温。详情请点击src '意思是取src属性的值,这里是图片的地址。

因为它同时抓取多个网页,所以我们可以考虑使用多线程抓取更快。

代码如下:

导入操作系统

导入请求

从lxml导入etree

来自urllib。请求导入URL检索#下载图片库

从并发。期货导入线程池执行器#多线程库

数量=0

课程下载:

def __init__:

# self . URL = " https://www . mzi tu . com/"

self . URL = " https://www . buxiuse . com/"

self.list=[]

对于范围内的I:

Self.list.append #抓取六十页照片

self.headers = {

用户代理':' Mozilla/5.0 AppleWebKit/537.36 Chrome/66 . 0 . 3359 . 139 Safari/537.36 '

}

self.mkdir1

def mkdir1:

如果OS.path.exists: #创建一个目录,如果它已经存在,什么都不做。

os.mkdir

定义发送请求:

返回。正文)

定义解析:

tree=etree。HTML)

return tree.xpath #匹配获取img标签下的src属性里面的值,因为图片地址就在src里面返回。XPath #匹配以获得img标记下src属性中的值,因为图像地址在src中。

#这将返回图片地址列表。

Def pachon: #不使用多线程的爬虫功能。

全局编号

对于自我列表中的I:

打印

img_list=self.parseimg_list=self.parse

for j in img_list:对于img_list中的j:

urlretrieve

数字+=1

DEF PACHON _ 1元:#准备下面的多线程

打印

全局编号

img_list=self.parseimg_list=self.parse

for j in img_list:对于img_list中的j:

#urlretrieve[-1])

urlretrieve

数字+=1

定义多进程:#多线程爬虫

i=0

使用ThreadPoolExecutor作为池:

while i+2

 
友情链接
鄂ICP备19019357号-22