【学习】02 今日头条爬虫-采集和下载关键词“新垣结衣”的图集图片

参考:

静觅丨崔庆才的个人博客

项目地址:

copywang/spiders_collection

实现功能:

  1. 使用requests库爬取得到首页信息,返回的HTML代码中不包含需要的信息,都是些JS
  2. 在XHR中找到JSON请求和数据
  3. 使用request.get方法请求JSON数据,使用urlencode()生成完成的URL
  4. 在第3步中得到一个字符串,使用json.loads()方法生成字典形式的JSON变量,通过keys()方法获取需要的标题信息,定义成生成器,得到所有的
  5. 使用for循环调用第4步中的生成器,返回每个文章的url,传递给请求详情页的函数
  6. 如果请求到了详情页,那么解析详情页,需要从返回的HTML代码中获取字段信息,因此采用BeautifulSoup进行解析
  7. 用bs的select()方法获取title,并用get_text()取出第一个内容
  8. 使用正则表达式从解析后的页面中找到图片地址,返回的是一个字符串
  9. 第一次用json.load()返回的依然是1个字符串,需要嵌套多1层json.load()
  10. 在第9步返回的JSON变量中,使用get()方法提取所有图片的地址,返回一个list,再使用for循环,遍历返回的list,得到所有图片的下载地址,并下载,把结果保存到MongoDB

遇到的问题:

  1. 第9步的字符串也是反爬的手段之一,需要使用2次json.loads()

未解决问题:

收获

  1. 分析AJAX返回的网页
  2. 使用BeautifulSoup解析网页,并获取需要的信息
  3. 字符串转JSON常量
  4. 保存图片
原文地址:https://www.cnblogs.com/copywang/p/7894512.html