网页爬虫抓取百度图片(2016年7月26日(周四)、、上一步公告)

优采云 发布时间: 2022-01-18 08:03

  网页爬虫抓取百度图片(2016年7月26日(周四)、、上一步公告)

  第二步:输入关键字,页面加载完毕后,按F12进入开发者模式,因为百度图片ajax是动态加载的,点击网络标签,刷新页面,查看XHR数据,截图如下:

  p>

  

  第 3 步:分析多个 XHR 并获取规则。每个页面请求的url携带的参数只有pn、rn、gsm(不关心),它们是不同的,其中pn代表当前页面。 , rn 表示一个页面有几条数据,如下截图所示:

  

  

  第四步:分析完上一步url的规则后,我们找到图片的隐藏位置,点击任意XHR,从0到29,一共30条数据,图片的信息存储在每个字典中,其中'thumbURL'存储地址,截图如下:

  

  第五步:上一步已经分析了图片存放的地方,接下来我们来写代码,代码如下:

  import requests

import os

class Image():

url = 'https://image.baidu.com/search/acjson'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.9 Safari/537.36'

}

varlist = []

dir = './images'

params = {}

def __init__(self):

global page_num,keywords

page_num = int(input('请输入要抓取的页数:\n'))

keywords = input('请输入关键字:\n')

if self.catch_page():

self.writeData()

else:

print('抓取页面失败')

def catch_page(self):

for i in range(0,page_num * 30,30):

self.params = {

'tn': 'resultjson_com',

'ipn': 'rj',

'ct': '201326592',

'is': '',

'fp': 'result',

'queryWord': keywords,

'cl': '2',

'lm': '-1',

'ie': 'utf-8',

'oe': 'utf-8',

'adpicid': '',

'st': '-1',

'z': '',

'ic': '0',

'hd': '',

'latest': '',

'copyright': '',

'word': keywords,

's': '',

'se': '',

'tab': '',

'width': '',

'height': '',

'face': '0',

'istype': '2',

'qc': '',

'nc': '1',

'fr': '',

'expermode': '',

'force': '',

'cg': 'girl',

'pn': i,

'rn': '30',

'gsm': '',

'1584010126096': ''

}

res = requests.get(url = self.url,params = self.params).json()['data']

for j in range(0,30):

self.varlist.append(res[j]['thumbURL'])

if self.varlist != None:

return True

return False

def writeData(self):

# 判读是否存在文件,不存在则创建

if not os.path.exists(self.dir):

os.mkdir(self.dir)

for i in range(0,page_num * 30):

print(f'正在下载第{i}条数据')

images = requests.get(url = self.varlist[i])

open(f'./images/{i}.jpg','wb').write(images.content)

if __name__ == '__main__':

Image()

  第6步:完成插花

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线