现在很多网站都是异步加载的方式加载数据,大部分都是json数据,如果不知道数据的传递过程,一些参数理不清头绪的话,又想要获取数据,那就比较难搞了,尤其是对于本渣渣级选手而言。
目标网址
需求
获取图片信息,需高清大图
经过简单浏览器抓包调试,可以获取到一些信息!
不想努力了,想了两个笨方法,好在数据量不大!
枚举法获取图片地址,爬取图片
1.每句获取图片地址
代码示例
for i in range(10000):
if len(str(i))==1:
i=f'000{i}'
if len(str(i))==2:
i = f'00{i}'
if len(str(i))==3:
i = f'0{i}'
if len(str(i)) ==4:
i=i
print(i)
url=f"https://www.keyshot.com/wp-content/uploads/2016/06/keyshot-gallery-{i}.jpg"
if requests.get(url, headers=self.random_headers):
print("存在图片!")
可以看到id与图片链接是存在关系的,所以,对于id进行迭代,同时进行了if判断!
2.图片下载
代码示例
def save_img(self, img_url, img_name, path):
os.makedirs(f'{path}/', exist_ok=True)
print("开始下载图片!")
print(f">>> 开始保存 {img_name} 图片")
r = requests.get(img_url, headers=self.random_headers,timeout=8)
with open(f'{path}/{img_name}.jpg', 'wb') as f:
f.write(r.content)
print(f">>> 保存 {img_name} 图片成功")
这里需要注意的是 timeout=8 属性一定需要标配,尤其是国外网站获取请求的话,不然容易卡死!
完整代码
# -*- coding: UTF-8 -*-
#微信:huguo00289
import requests
import random,os
class Httprequest(object):
ua_list = [
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36Chrome 17.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.1