动态加载图片网站爬虫基本操作

1判断动态加载

检查流程如下:
1.1 浏览器检查,观察network->XHR,确定是否是动态页面(如果随着下拉页面,项目不断增加就说明是动态页面)。

1.2. 确定是动态页面以后,观察任意几个请求项目(Network->XHR)中的Request url (network->XRH->headers—> Request headers-->referer)中的链接有什么不同,也就是观察这些参数有什么不同和相同的(参数在headers-> query string parameters中)

1.3. 想办法构造出这个请求url,获取到目标 或者 动态实际页面的HTML代码文件

1.4. 然后就是要解析获取的HTML代码了,于是先观察一下 Network->XRH->preview中的信息,看看要提取的是哪些

因此:
通过观察1.2中参数不同的链接,找到真实加载的链接。所以第一步先构造出这样的一个url

 from urllib.parse import urlencode
 params={
      'page': str(page),
      'per_page': '12'
  }
 base_url='https://unsplash.com/napi/photos?'
 url = base_url + urlencode(params)

  response=requests.get(url,headers=headers,verify=False)  #自行构造headers

上述构造使得我们获得我们需要的资源,然后进行提取返回内容里面的id,构造真实的下载链接。通过fiddler抓取点击图片下载按钮后(不能确定是哪个进程,就多点击几个下载按钮,就好分辨哪类表示是发送下载链接的进程),可以知道发送的获取图片的地址是哪个(爬虫时候构造这个链接就行了)。如下图,点击下载按钮后,GET :/photos/WvkdIJh3GJ0/download?force=true 也就是代表https://unsplash.com//photos/WvkdIJh3GJ0/download?force=true就可以进行下载了。
1624355-20190725163745121-188969988.png

于是我们只要获取 上步操作response中的id进行构造下载链接,就可以实现下载了。

2.基于爬取unsplash.com爬取图片的实战

https://github.com/jacker2019/pythonpractice/blob/master/%E7%88%AC%E8%99%AB/%E7%88%AC%E5%8F%96AJax%E6%B8%B2%E6%9F%93%E7%9A%84%E5%8A%A8%E6%80%81%E5%9B%BE%E7%89%87%E7%BD%91%E7%AB%99unsplash.py

3.关于json的小笔记

如果使用filter抓包的话,很明显会发现json格式的数据,json格式数据,实际是字典套字典的具有结构的这么一种数据格式
碰到json格式,想把它转换为python可以处理的数据格式

json.load()与json.loads()转化为python数据类型

json.dump()与json.dumps()转化为json类型。

注意:有s的表示对象是json字符串,没有s表示对象是json类文件对象

写在最后

小白笔记,有错误或不当之处,还请大佬们指正!

转载于:https://www.cnblogs.com/jacker2019/p/11242011.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值