【学习】02 今日头条爬虫-采集和下载关键词“新垣结衣”的图集图片
参考:
项目地址:
实现功能:
- 使用requests库爬取得到首页信息,返回的HTML代码中不包含需要的信息,都是些JS
- 在XHR中找到JSON请求和数据
- 使用request.get方法请求JSON数据,使用urlencode()生成完成的URL
- 在第3步中得到一个字符串,使用json.loads()方法生成字典形式的JSON变量,通过keys()方法获取需要的标题信息,定义成生成器,得到所有的
- 使用for循环调用第4步中的生成器,返回每个文章的url,传递给请求详情页的函数
- 如果请求到了详情页,那么解析详情页,需要从返回的HTML代码中获取字段信息,因此采用BeautifulSoup进行解析
- 用bs的select()方法获取title,并用get_text()取出第一个内容
- 使用正则表达式从解析后的页面中找到图片地址,返回的是一个字符串
- 第一次用json.load()返回的依然是1个字符串,需要嵌套多1层json.load()
- 在第9步返回的JSON变量中,使用get()方法提取所有图片的地址,返回一个list,再使用for循环,遍历返回的list,得到所有图片的下载地址,并下载,把结果保存到MongoDB
遇到的问题:
- 第9步的字符串也是反爬的手段之一,需要使用2次json.loads()
未解决问题:
无
收获
- 分析AJAX返回的网页
- 使用BeautifulSoup解析网页,并获取需要的信息
- 字符串转JSON常量
- 保存图片