"""
爬虫:模拟客户端<浏览器,app应用>批量请求服务器数据
爬虫数据采集的一般步骤:
1.找数据对应的链接地址
2.发送指定地址请求,请求数据
3.数据提取(提取需要的数据)
4.数据保存
"""
import requests # 数据请求,第三方模块:pip install requests
import parsel # 数据解析模块,第三方模块:pip install parsel
import os # 内置模块,文件目录操作的模块
# 1.找数据对应的链接地址
url = "https://www.jdlingyu.com/tag/%e5%b0%91%e5%a5%b3"
# user-agent:浏览器的身份标识
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}
# 2.发送指定地址请求,请求数据
response = requests.get(url, headers=headers)
# text 获取对象里面的文本数据
html_str = response.text
# print(html_str)
# 3.数据提取(提取需要的数据) html数据, xpath提取 parsel
# parsel库可以解析HTML和XML,并支持使用Xpath和CSS选择器对内容进行提取和修改,同时融合了正则表达式的提取功能
selector = parsel.Selector(html_str) # 转换数据类型
# 提取所有的li标签
lis = selector.xpath('//div[@id="post-list"]/ul/li')
for li in lis:
# 获取标题
pic_title = li.xpath('.//h2/a/text()').get() # 相册标题,用于保存相册的文件夹名
# 获取相册链接
pic_url = li.xpath('.//h2/a/@href').get() # 相册链接
# print(pic_title, pic_url)
print(f"正在下载相册:{pic_title}")
dir_name = 'images/' + pic_title
# 创建相册文件夹
# 判断该文件夹是否存在
if not os.path.exists(dir_name):
# 不存在则创建
os.mkdir(dir_name)
# 发送相册详情页地址请求
response_pic = requests.get(url=pic_url, headers=headers).text # 详情页数据
# 解析详情页中的图片地址
selector_2 = parsel.Selector(response_pic)
# 获取所有链接
pic_url_list = selector_2.xpath('//div[@class="entry-content"]//img/@src').getall() # 所有图片链接
# 遍历每一个图片链接
for pic_url in pic_url_list:
# 发送图片链接请求,获取图片数据,图片数据是二进制数据
# content 提取二进制数据
img_data = requests.get(url=pic_url, headers=headers).content
# 4.数据保存
# 4.1 准备图片的文件名
file_name = pic_url.split('/')[-1] # -1:取列表中的最后一个元素
# 4.2 保存图片
# w-->write b-->binary
with open(dir_name + '/' + file_name, mode='wb') as f:
f.write(img_data)
print('保存完成:', file_name)
python爬取某网站上的图片2
最新推荐文章于 2024-08-11 22:06:01 发布
本文介绍了如何使用Python爬虫批量请求服务器上的图片数据。首先找到数据链接,然后设置user-agent伪装浏览器发送GET请求,获取HTML内容。接着利用parsel库解析HTML,提取相册标题和链接,为每个相册创建文件夹并下载其中的图片。最后,保存图片到本地文件系统。
摘要由CSDN通过智能技术生成