urllib库爬取拍信创意图片(post请求)json传参

urllib库爬取拍信创意图片

解决urllib库遇到Request payload传参问题

分析网页:

找到接口:
在这里插入图片描述

发现图片数据都是以json格式存储在这个接口里
在这里插入图片描述
我们在来看接口所需要的data,这里的searchQuery参数就是我们搜索的值,所以我们可以改变它,从而爬取更多类型的图片,page就是页码,size就是每页的图片数。
在这里插入图片描述

明确目标后,我们就可以开始写代码了
代码如下:

#url就是接口上的url
url='https://api2.paixin.com/medias/1/search?page=0&size=80'
headers={
'Content-Type': 'application/json;charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'
}
data={
"searchQuery": "美女",
"type": "6"
}
#Request payload类型的data是为json字典形式的,所以我们只需要dupms一下就好了
data=json.dumps(data).encode('utf-8')
req=request.Request(url=url,data=data,headers=headers)
html=request.urlopen(req).read()
#我们得到是json字符串,要想变成字典形式需要loads一下
newhtml=json.loads(html.decode())
print(newhtml)

输出的内容就为:
在这里插入图片描述
这样我们就已经完成了80%了,接下来就是用for循环去遍历找到所有的图片链接,然后下载下来就好了。
完整代码如下:

from urllib import request
import json
def get_data(a,page,title):
    for i in range(0,page):
        url='https://api2.paixin.com/medias/1/search?page={}&size=80'.format(i)
        headers={
        'Content-Type': 'application/json;charset=UTF-8',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'
        }
        data={
        "searchQuery": title,
        "type": "6"
        }
        data=json.dumps(data).encode('utf-8')
        req=request.Request(url=url,data=data,headers=headers)
        html=request.urlopen(req).read()
        newhtml=json.loads(html.decode())
        print(newhtml)
        for key in newhtml['elements']:
            print(key['image'])
            baseurl='http:{}'.format(key['image'])
            request.urlretrieve(baseurl,'E:\\PyCharm Community Edition 2019.1.2\\dasj\\urlib库实践\\拍信创意\\{}.jpg'.format(a))
            a+=1
        print('==' * 20, '第{}页已经完毕'.format(i), '==' * 20)
if __name__ == '__main__':
    a=1
    title = input('请输入爬取标题:')
    page=int(input('请输入爬取页数:'))
    get_data(a,page,title)

新手博主,写的不好希望大家多多担待
看完的小伙伴来个一键三连吧,非常感谢
注:此文章仅供参考学习

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值