目录
前置工作(如何找到URL)
前置工作
我想在某度上爬取下来然后单独挑选合适的壁纸。
我用的是某歌浏览器,不同的浏览器在操作上大同小异
来到搜索页,我们会发现这是滚轮下滑(埋下伏笔【狗头】),打开检查页(F12),点击“网络”(未汉化的是Network),再点击“Fetch/XHR”,然后刷新一下页面,我们会看到一些接口
此时我们还是没有啥头绪,然后我们将页面向下滑动 !
我们会发现随着我们向下滑动页面,窗口中出现了几个相同的接口,点击第一个相同的接口,查看预览,找到data并点击,会发现有0到30个小字典,点击第一个,在里边的内容中我们便可以找到对应的图片链接“middleURL”,这代表着我们已经成功了一半!
开始我们的代码工作,点击标头,对应的url便是我们需要的URL,再找到响应标头,找到User-Agent这是我们的headers
url = 巴拉巴拉
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}
同时查看本接口的请求方法
Get方法
导包Requests,发起get请求
import requests #导包
response = requests.get(url = url ,headers = headers) #发出Get请求
接收json数据
data_json = response.json() #接收json数据
接收到数据后,我们要从中获取到我们想要的图片链接“middleURL”,首先我们要获取key名为“data”的内容,因为“middleURL”在“data”中,同时“data”中存储的是0-29张照片的“middleURL”(因为30为空),所以我们需要通过For循环来获取全部“middleURL”,得到“middleURL”后,同样是发起Get请求,获取图片的二进制数据,再将它们写入我们想要的文件夹!
data_list = data_json['data'] #获取钥匙名为“data”的内容
for data in data_list[:-1] : #持续获取“middlURL”数据
middleURL = data['middleURL']
img_data = requests.get(middleURL).content #向图片链接发起get请求
with open(f'img_bizhi/{number}.jpg', mode='wb') as f: #向文件夹中写入二进制数据
f.write(img_data)
number += 1 #图片名称
至此第一页的照片爬取完毕,但这远远不够,回到浏览器的窗口中,我们点击第二个相同接口,查看URL,同样的第三个第四个....,寻找他们的规律,我们会发现,其中的奥妙存在于后段的pn上每30页是一个新的页面,至此问题全部解决,我们用For循环来完成URL的改变。
源码
全部源码(已打码)
import requests
number = 1;
for page in range(1,11):
url =f'打码打码打码打码打码打码打码&pn={page*30}&打码打码打码打码打码打码'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
}
response = requests.get(url = url ,headers = headers)
data_json = response.json()
data_list = data_json['data']
for data in data_list[:-1] :
middleURL = data['middleURL']
img_data = requests.get(middleURL).content
with open(f'img_bizhi/{number}.jpg', mode='wb') as f:
f.write(img_data)
number += 1
print(f'第{page}页完成')