前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
相关环境配置
- python 3.6
- pycharm
- requests
- parsel
相关模块pip安装即可
确定目标网页
我想要爬取这些素材图片,那首先要从尾开始找起,先要知道素材下载的地址是什么
通过点击素材进入素材详情页,可以看到本地下载地址,多复制几个素材的下载地址链接:
http://www.aiimg.com/sucai.php?open=1&aid=126632&uhash=70a6d2ffc358f79d9cf71392
http://www.aiimg.com/sucai.php?open=1&aid=126630&uhash=99b07c347dc24533ccc1c144
http://www.aiimg.com/sucai.php?open=1&aid=126634&uhash=d7e8f7f02f57568e280190b4
每个链接的aid不一样,这个应该就是素材的每个ID,后面的uhash又是什么呢
原本想着网页数据里面是否有接口数据可以直接找到这个参数,在开发者工具里面搜索并没有这个参数,看一下网页源代码里面是否有这个下载链接~
有这个链接的话,咱们获取链接之后就可以直接下载~
常规操作:
1.打开开发者工具,查看网页是否返回自己想要获取的数据。
可以发现,咱们需要的数据都在网页的标签里面,请求网页获取返回数据
import requests
url = 'http://www.aiimg.com/list.php?tid=1&ext=0&free=2&TotalResult=5853&PageNo=1'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
print(response.text)
解析网页数据
import parsel
selector = parsel.Selector(response.text)
lis = selector.css('.imglist_d ul li a::attr(href)').getall()
for li in lis:
num_id = li.replace('.html', '').split('/')[-1]
new_url = 'http://www.aiimg.com/sucai.php?aid={}'.format(num_id)
response_2 = requests.get(url=new_url, headers=headers)
selector_2 = parsel.Selector(response_2.text)
data_url = selector_2.css('.downlist a.down1::attr(href)').get()
title = selector_2.css('.toart a::text').get()
download_url = 'http://www.aiimg.com' + data_url
保存数据
素材都是psd、ai或者cdr的文件 保存之后都是zip压缩包的形式
def download(url, title):
path = '路径' + title + '.zip'
response = requests.get(url=url, headers=headers)
with open(path, mode='wb') as f:
f.write(response.content)
print('{}已经下载完成'.format(title))
这个是只是单页的爬取,也可以实现多页爬取~