python 百度原图爬虫 高清图 ~按分辨率爬取,解析简单加密。

本文讲述了作者在爬取百度图片时遇到的三个难点:js加载的下载链接、获取json数据以及分辨率为缩略图的问题。通过分析找到了解决方法,包括利用js加密的Objurl获取原图,并探讨了如何利用ip代理和多线程提高爬虫效率。
摘要由CSDN通过智能技术生成

前几天被公司临时安排了一个爬取百度图片的人物。我一开始以为很简单。后来发现只要分辨率大于500*438左右就是缩略图。导致了我经历了很多的坑。下面带你们感受下从坑到填满坑。

百度图片 百度图片

因为我要按照分辨来进行爬取,所以先自定义好分辨率在这里插入图片描述
先给大家排个坑,这个页面是什么看不到什么数据的,所以要去其他页面。点击图片进入下一个页面
在这里插入图片描述
在这里插入图片描述
第一个坑~
因为当时我想方便一点。就想直接用这个下载的url,因为python的requests可以直接用下载的链接 也可以直接下载下来。
但是!!
这个页面是js加载的,requests这个页面没办法出来这个下载的按钮的数据参数。当然可以使用selenium 自动化是可以做到的。但是对于大量爬虫不现实。 这个方法pass掉

第二个坑
会点爬虫的都会找到这个页面的json数据
在这里插入图片描述

写爬虫访问这个页面有2个方法,1.可以用url拼接(format参数)

page_url = url.format(urllib.parse.quote(word), num * page_num,width,height) #这样拼接参数

2.或者使用 response = requests.get(detail_url, params=params)

params = {
   
      "word": word,
       "di": item['di'],
        "tn": "baiduimagedetail",
        "cs": item['cs'],
       "os": item['os'],
    }
    detail_url = "http://image.baidu.com/search/detail"
    response = requests.get(detail_url, params=params)

使用什么看自己个人喜爱。当然我建议第二种。
参数就在下面的

在这里插入图片描述
这里面有几个参数要改一下。
{pn=0 这是图片的起始数}
{rn= 30 这是百度json数据每次最多可以出30条}
{word = ‘’ 搜索的关键词}

接下来就是找原图了
在这里插入图片描述
第三坑
这几个url 的图片在分辨率小于500*438是原图,但是分辨率大一点就是缩略图。这个坑很关键。

但是当我们去看Objurl的时候发现有时候是原图有时候却是无法访问页面 这就是说明这个objurl有可能是我们要找到。
然后我们去js中找一下,可能有点多,但是你细心会找到点东西。

在这里插入图片描述
后面我发现这个个是Objurl的加密。
在这里插入图片描述

可能搜索出来有点多,但是不妨碍,一个一个看下就好了。
然后将这个放入代码中就可以了。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值