嗨喽!大家好,这里是魔王。总所周知, 某站是某知名的虚拟社区, 聚集了众多的优秀艺术家.他们在某站上相互交流, 分享高清优秀插画, 是一个正经的网站!那么我们今天就来爬一爬它!
亮点:- 系统分析目标网页
- html标签数据解析方法
- 海量图片数据一键保存
- python 3.8 – anaconda 安装了一些模块 / 自动的 配置环境变量
- pycharm 2021专业版 >>> 激活码
- requests >>> pip install requests
- parsel >>> pip install parsel
确定需要爬取的数据是什么 在哪里?
- 图片
- 网页源代码
- 发送网络请求 目标网站 https://www.acg-pixiv.com/tags/459.html
- 获取数据 网页源代码
- 提取数据 在网页源代码中提取所有的详情页链接
- 发送网络请求 详情页链接
- 获取数据 每一个详情页的网页源代码
- 提取数据 提取详情页中的图片链接
- 发送网络请求 图片链接
- 获取数据 图片二进制数据
- 保存数据
- 翻页爬取
要把现在的代码推翻, 重新写
import requests # 发送网络请求的模块 import parsel # 提取数据 import re发送网络请求 目标网站
url_1 = 'https://www.acg-pixiv.com/tags/450.html' response_1 = requests.get(url_1) #获取数据 网页源代码: 告诉我们访问成功了
data_html_1 = response_1.text提取数据 在网页源代码中提取所有的详情页链接
selector = parsel.Selector(data_html_1) # 提取链接 属性内容 @属性名称 css xpath re 三节课 6-9个小时 href_list = selector.xpath('/html/body/div/div[1]/ul/li/a/@href').getall() title_list = selector.xpath('/html/body/div/div[1]/ul/li/a/@title').getall()发送网络请求 详情页链接
for info in zip(href_list, title_list): # 索引取值 元组 url_2 = 'https://www.acg-pixiv.com' + info[1]获取数据 每一个详情页的网页源代码
# content? 获取二进制数据 response_2 = requests.get(url_2).text提取数据 提取详情页中的图片链接
selector_2 = parsel.Selector(response_2) # 图片链接 url = selector_2.xpath('/html/body/div/div[1]/div[1]/div/img[1]/@src').get() print(url)发送网络请求 图片链接
# 图片是二进制数据 网站 延迟太高了 实在是访问不到图片 # 如果说我的请求超过了五秒钟没有给我反应? 直接报错 # 当这个程序报错的时候 try: img_data = requests.get(img_url, timeout=5).content except: # 图片链接改一下 img_url = img_url.replace('800', '400') img_data = requests.get(img_url).content # 标题有问题 里面有一些特殊字符 title = re.sub(r'[\/:*?"<>|]', '_', info[1]) print(f'---------正在爬取{title}---------') with open(f'img/{title}.jpg', mode='wb') as f: f.write(img_data)
ps:这是重翻写后得代码
好了,我的这篇文章就先到这里啦,有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)