超详细,爬取今日头条街拍图片

本文基于崔庆才大大的代码,在学习完大神代码之后写一下自己思路
崔庆才Github源码地址

  • Step1 使用Chrome浏览器打开今日头条,在搜索栏输入街拍
  • Step2 分析网页
  1. 分析网页结构
    网页中图片有3种形式出现,一种是视频,一种是图集,一种是单个图片。此次选择图集网页爬取~
  2. 判断是否为动态网页
    按f12或右键网页空白处–>查看页面源代码–>搜索网页中任意内容–>搜索得到是静态网页,搜索不到则为动态加载网页。显而易见,今日头条是动态网页。
  3. 使用抓包工具,进行进一步分析
    右键网页空白处–>检查–>Network–>XHR–>刷新页面(重新加载页面,抓取数据)
    此时可以看到抓到的数据包,挨个看发现这个数据包里有想要的数据:
    超详细,爬取今日头条街拍图片_第1张图片
    针对图集数据项,仔细分析,发现了image_list和title这样目标明显的词条,对比网页title就是文章标题,而image_list中包含众多链接,点开瞧瞧,的确是图片。猜测image_list中的链接就是图集中的图片地址。
  4. 验证猜想
    在图集的图片上右键,选择新标签页中打开图片,对比链接,yes!链接和image_list中链接一模一样。进行多次验证结果也是如此。ok,得到了文章标题和图片链接。
  5. 分析如何网页真实地址,和网页加载规律
    确认网页是动态加载之后,在网页中向下滚动滑轮,发现网页一直在动态生成,而浏览器也一直在抓包。逐个点开加载的数据包,点开headers
    超详细,爬取今日头条街拍图片_第2张图片
    经过这几个数据包Request URL对比,发现只有offset= 发生了改变,而且有规律每次增加20,第一个包offset=0,第二个offset=20,第4个offset=60…(timestamp为时间戳,网站一般不检查无视之)Request URL:

Request URL: https://www.toutiao.com/api/search/content/?
aid=24&app_name=web_search&offset=0&format=json&
keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&en_qc=1&cur_tab=1&
from=search_tab&pd=synthesis×tamp=1567768194429

分析url发现有许多参数,将滑轮滚动到底部,发现:
超详细,爬取今日头条街拍图片_第3张图片
由此,可以构建请求地址(offset变动,keyword为街拍编码后的字符串)
6. 分析请求头(Request Headers)
超详细,爬取今日头条街拍图片_第4张图片
将网站高频检查的请求头字段提出,包装进我们的请求头.
到这里,分析已经结束。

  • Step4 构建代码。源码可在Github上下载大神代码学习
  • 最后说一句,image_list中图片是小图,与网页中大图不一致,经过分析需要将链接中list替换为large。大神代码中已处理,放心使用~

谢谢大家的阅读,如觉有用请帮我点赞!!!

你可能感兴趣的:(新手上路,爬虫)