python爬虫-谈谈今日头条(爬取图集)
2018-09-24 09:29
267 查看
1.工具使用
python的request包和json包
fiddle抓包工具
2.请求分析
我们访问该页面,抓取请求,得到如下结果。
不难发现,在图片加载之前数据量最大的就是search_content请求,其实了解后端开发的知道这是一个带参数的请求且参数之一就是搜索关键词,而且还有一个参数format=json,不妨猜测这是一个json请求,然后网页利用这个json文件进行渲染。
3.文件获取
我们尝试解包,成功。
发现有20个结构相同的数组,而之前的请求包含数量和页码就是第一页的20个,如此不难通过循环控制url来访问每一页的json文件。
4.json分析
不难发现,每一个帖子的图片集合在image_list中,但是这些url访问得到的图都是很小的,我们看到image_list下面出现了large_image_url不难知道大图的url结构,进行一个字符串替换即可。(也就是list替换为large)
5.文件存储
利用二进制存储到本地。由于尝试需要,这里就不进行异常处理。
6.完整代码
[code]import requests import json base_url = "https://www.toutiao.com" def get_pics(number): target_url = "https://www.toutiao.com/search_content/?offset=0&format=json&keyword=%E7%BE%8E%E5%A5%B3&autoload=true&count=20&cur_tab=3&from=gallery" target_url = target_url.replace("xxx", str(number)) return target_url if __name__ == '__main__': url_list = [] for i in range(0, 1000, 20): url_list.append(get_pics(i)) headers = {'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Referer': 'http://www.xicidaili.com/nn/', 'Accept-Encoding': 'gzip, deflate, sdch', 'Accept-Language': 'zh-CN,zh;q=0.8', } rsp_list = [] for item in url_list: rsp_list.append(requests.get(item, headers=headers, verify=False)) pic_list = [] for item in rsp_list: j = json.loads(item.text)['data'] for item in j: try: for i in item['image_list']: pic_list.append("http:"+i['url'].replace("list", "large")) except Exception as e: pass import os number = 0 os.chdir("zc2") for i in pic_list: s = requests.get(i, headers=headers).content with open(str(number)+".jpg", 'wb') as f: f.write(s) print(" 第{}张图片下载完成".format(number)) number += 1
阅读更多
相关文章推荐
- [python爬虫小实战2]根据用户输入关键词爬取今日头条图集,并批量下载图片
- python爬虫自动搜索下载游民今日搞笑图集
- Python爬虫实战入门五:获取JS动态内容—爬取今日头条
- Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
- Python爬虫-分析Ajax抓取今日头条街拍美图
- Python 爬虫实例(3)—— 爬取今日头条as cp 算法 解密
- python-爬虫(今日新闻头条练手)
- 【Python】分析Ajax请求并抓取今日头条图集数据
- [Python爬虫] 之二十七:Selenium +phantomjs 利用 pyquery抓取今日头条视频
- Python 爬虫实例(2)—— 爬取今日头条
- python3.x爬虫实战:爬今天头条的图集
- Python爬虫实战入门五:获取JS动态内容—爬取今日头条
- Python爬虫之四:今日头条街拍美图
- Python爬虫实战02:分析Ajax请求并抓取今日头条街拍
- python3爬取今日头条(模拟ajax请求)
- 2018春招-今日头条笔试题-第四题(python)
- Python爬虫-进程池方式爬取头条视频
- 用Python+Selenium爬取今日头条关于江歌案的文章
- 2018春招-今日头条笔试题-第三题(python)