这次瞄准某回车!
导入请求库先
import requests
这网站有反爬,加个cookie直接完事
利用css来定位一下
link_list = selector.css('.swiper-slide a img::attr(src)').getall()
打印出来后发现是小图,仔细分析一下地址,发现小图都是360_360,而大图是source。
那么
for img in link_list:
img = img.replace('360_360','source')
print(img)
这样子点开之后全是大图了!
然后就是保存了,实现给图片二进制,再进行保存
img_data = requests.get(img).content
title = img.split('/')[-1]
with open(f'tutu/{title}',mode='wb') as f:
f.write(img_data)
代码如下
import requests
import parsel
headers = {
'cookie': '',
'user-agent': ''
}
url = 'https://xxxxxxx/bizhi/64559-351250.html'
response = requests.get(url=url, headers=headers)
html = response.text
selector = parsel.Selector(html)
# print(selector)
link_list = selector.css('.swiper-slide a img::attr(src)').getall()
for img in link_list:
img = img.replace('360_360','source')
# print(img)
img_data = requests.get(img).content
title = img.split('/')[-1]
with open(f'tutu/{title}',mode='wb') as f:
f.write(img_data)
单个是搞定了,但是我们要全部的·-·+
接下来去到源代码
发现这个dt是我们想要的
那么把它复制出来,这次的话用到re模块来给它匹配
zip_data = re.findall('<div><a href="(.*?)" target="_blank">(.*?)</a>',data_html_1)
提取出来了
进行提取
for data in zip_data:
url = data[0]
下面的with open也改一下
with open(f'tutu/{data[1]}/{title}',mode='wb') as f:
f.write(img_data)
这个data是我们要爬取每一个小册,这个是为了创建每一个文件夹来放这个小册的。
如果是直接运行绝对报错,因为没有这样的文件夹呀!所以我们又要用到os库来创建文件夹了。
if not os.path.exists('tutu/' + data[1]):
os.mkdir('tutu/' + data[1])
完整代码如下:
import requests
import parsel
import re
import os
headers = {
'cookie': '',
'user-agent': ''
}
response_1 = requests.get('https://xxxxx.com/', headers=headers)
data_html_1 = response_1.text
zip_data = re.findall('<div><a href="(.*?)" target="_blank">(.*?)</a>', data_html_1)
for data in zip_data:
url = data[0]
print(f'------正在爬取{data[1]}------')
if not os.path.exists('tutu/' + data[1]):
os.mkdir('tutu/' + data[1])
# url = 'https://xxxxxxx/bizhi/64559-351250.html'
response = requests.get(url=url, headers=headers)
html = response.text
selector = parsel.Selector(html)
# # print(selector)
link_list = selector.css('.swiper-slide a img::attr(src)').getall()
for img in link_list:
img = img.replace('360_360', 'source')
# print(img)
img_data = requests.get(img).content
title = img.split('/')[-1]
with open(f'tutu/{data[1]}/{title}', mode='wb') as f:
f.write(img_data)
print(title, "爬取成功!")