专栏首页数据挖掘python3抓取异步百度瀑布流动态图片(一)查找post并伪装头方法

python3抓取异步百度瀑布流动态图片(一)查找post并伪装头方法

打开流程:

用火狐打开百度图片-->打开firebug-->输入GIF图-->搜索-->点击网络-->全部

观察页面:

首先要观察的对象是“域”,图片的json一般是放在主要的“域”里面的,任何网站的主要的“域”就是自身,即百度图片的网址image.baidu.com,根据这个“域”我们再去查找URL。

查找方式:

点开“+”号,开打json,观察里面的json的图片网址:

随便点开一个“data”得到一个图片网址:

在浏览器新的窗口里面打开这张图片看看是不是出现在百度图片里面的图片,图片打开时这个样子:

返回百度图片里面去查找:

发现也在百度图片里面,那么这个url就是我们要找到的json了,返回去点击复制网址和参数下面的东西出来:

 在txt里面观察:

继续观察url,url包含了一大堆的参数,每一个&都固定了一个参数:

http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=gif&oq=gif&rsp=-1

从头到尾看,tn、ipn、ct...

这些在参数里面都有显示,那么我们构造的网址就是:

http://image.baidu.com/search/index?tn...&ipn...&ct...&.....&.....

再去观察百度哪里是用get方式的,所以我们的python也应该用get方式:

有些网址使用post的,那种方式在以后再去说

---------------------------------------我是快乐的分割线-----------------------------------------

url搞定,那么需要破解它的瀑布流。

浏览器往下拉,给百度图片加载下一个部分的url出来,下面这个是第二部分的url:

按照上面的方法观察json里面的data,得到的图片:

百度图片原文里面观察:

也是找到了这张图片,那么老规矩复制url和参数出来观察:

http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=gif&oq=gif&rsp=-1

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=90&rn=30&gsm=5a&1472362006630=
1472361986418

URL不相同???

继续往下翻!!!

http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=gif&oq=gif&rsp=-1

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=90&rn=30&gsm=5a&1472362006630=
1472361986418

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=150&rn=30&gsm=96&1472363883056=

后面两个网址有规律了,观察之...

看到没,pn!!!!!

一个pn是90一个是150,呵呵哒终于找到了,那么就要找到这个页数的规律。

刷新浏览器,直接翻到第11页:

然后把加载出来的那个特定的url全部复制到txt里面观察,下面我放了部分出来:

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=30&rn=30&gsm=1e&1472364207674=

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=90&rn=30&gsm=5a&1472364212829=

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=150&rn=30&gsm=96&1472364217002=

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=210&rn=30&gsm=d2&1472364220585=

http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=gif&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=gif&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=270&rn=30&gsm=10e&1472364223842=

看到这里还要我多说明么:

pn=30
pn=90
pn=150
pn=210
pn=270

搞定了url,到时候写个for i in range(...),太强大,到这里构造的post就完成了

----------------------------------------------我是快乐的分割线--------------------------------------------------

伪装头部是很重要的,要防止被反爬虫、反反盗链等等,那么头部就是:

referer是反反盗链,ua是反爬虫,host是主链,这三个最重要,笔者曾经偷懒只写了ua,被反反盗链害死,得到的图片为:

假如你们抓到这样的图那么说明失败,第一篇幅搞定。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • django-simple-captcha 验证码插件

    加入url(r'^captcha/', include('captcha.urls')),

    菲宇
  • web_bash笔记5

    上例中不带www的地址会返回301,wget会自动追过去,下载index.html并保存到当前目录,默认文件名相同,已存在的话自动添后缀

    ayqy贾杰
  • Java学习笔记开源框架——dubbo启动之注册中心(Registry)

    对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需...

    慕容千语
  • Nginx配置upstream实现负载均衡

    如今负载均衡初步完毕了。upstream依照轮询(默认)方式进行负载,每一个请求按时间顺序逐一分配到不同的后端服务器。假设后端服务器down掉。能自己主动剔除。...

    乱敲代码
  • Docker 中的 PHP 安装扩展插件

    为了保证 Docker 镜像尽量小,PHP 的源文件是以压缩包的形式存在镜像中,官方提供了 docker-php-source 快捷脚本,用于对源文件压缩包的解...

    菲宇
  • Retrofit笔记 | 基本使用步骤

    UserMgrService service = retrofit.create(UserMgrService.class);

    凌川江雪
  • 腾讯云:WordPress不使用插件来实现SMTP邮件发送功能

    在使用 WordPress 建站的过程当中,我们经常会用到邮件功能。WordPress 自带了 mail 函数,但用自带的 mail 函数来发送邮件的时候很容易...

    Wordpress教程
  • shell脚本监控php-fpm并自动重启服务

    监控php-fpm并自动重启服务的shell脚本,脚本的主要功能:不断检查网站的状态,如果异常就重启php-fpm服务

    菲宇
  • Java学习笔记——dubbo服务之底层通讯协议Protocol

    我们先来找到通讯协议的入口点吧。通过Protocol接口查找通讯协议入口点,我们根据接口的export方法搜索发现入口了,在ServiceConfig的doEx...

    慕容千语
  • Django中Celery http请求异步处理(四)

    菲宇

扫码关注云+社区

领取腾讯云代金券