
本实例介绍如何爬取链家网的图片。我们知道,爬取网页的第一步就是分析网页结构,无论是爬取网数据还是图片,我们都要知道图片的url或者数据的具体位置,以便后面进行更好的匹配。通过分析我们可以发现,链家网的图片url为这个形式:

我们可以复制链接在浏览器里打开确认一下:

可以看到地址正确,第一步分析就可以了。在编写代码之前,我们还需要知道我们的User-Agent,这样可以有效防止我们的IP被封。在浏览器按F12进入控制台,选择网络,重新刷新页面,商机一个加载项,点进去就可以看到请求头部信息。

接下去开始编写代码:
import urllib.request as urq
import re
import os
# 获取链家网的地址
url = "https://sh.lianjia.com/zufang"
# 导入headers信息:防止ip被封
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}
# 可以调用Request方法
req = urq.Request(url, headers=headers)
res = urq.urlopen(req)
data = res.read().decode("utf-8")
# 利用正则 解析html页面 并获取到图片
reg = 'data-src="(.*?.jpg.*)"'
# 调用正则 compile方法去解析
h = re.compile(reg)
# 调用 findall
pictures = h.findall(data)
# 先切换输出图片的路径
os.chdir("G:\\picture")
# 保存图片
x = 0
for picture in pictures:
x += 1
urq.urlretrieve(picture, "{}.jpg".format(x))
print("图片保存完毕")
运行完以上程序后我们再打开文件夹

发现数据已爬取完毕