博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分析Ajax爬取今日头条街拍美图
阅读量:6306 次
发布时间:2019-06-22

本文共 2228 字,大约阅读时间需要 7 分钟。

 

 

 

1 import os 2 import requests 3 from urllib.parse import urlencode 4 from hashlib import md5 5 from multiprocessing.pool import Pool 6  7 GROUP_START = 1 8 GROUP_END = 5 9 10 def get_page(offset):11     params = {12         'offset': offset,13         'format': 'json',14         'keyword': '街拍',15         'autoload': 'true',16         'count': '20',17         'cur_tab': '3',18         'from': 'gallery',19     }20     url = 'https://www.toutiao.com/search_content/?' + urlencode(params)21     try:22         response = requests.get(url)23         if response.status_code == 200:24             return response.json()25     except requests.ConnectionError:26         return None27 28 def get_images(json):29     data = json.get('data')30     if data:31         for item in data:32             # print(item)33             image_list = item.get('image_list')34             title = item.get('title')35             # print(image_list)36             for image in image_list:37                 yield {38                     'image': image.get('url'),39                     'title': title40                 }41 42 def save_image(item):43     if not os.path.exists(item.get('title')):44         os.mkdir(item.get('title'))45     try:46         local_image_url = item.get('image')47         new_image_url = local_image_url.replace('list','large')48         response = requests.get('http:' + new_image_url)49         if response.status_code == 200:50             file_path = '{0}/{1}.{2}'.format(item.get('title'), md5(response.content).hexdigest(), 'jpg')51             if not os.path.exists(file_path):52                 with open(file_path, 'wb')as f:53                     f.write(response.content)54             else:55                 print('Already Downloaded', file_path)56     except requests.ConnectionError:57         print('Failed to save image')58 59 def main(offset):60     json = get_page(offset)61     for item in get_images(json):62         print(item)63         save_image(item)64 65 if __name__ == '__main__':66     pool = Pool()67     groups = ([x * 20 for x in range(GROUP_START, GROUP_END + 1)])68     pool.map(main, groups)69     pool.close()70     pool.join()

 

转载于:https://www.cnblogs.com/wanglinjie/p/9123226.html

你可能感兴趣的文章
【图论算法】Dijstra&BFS
查看>>
注册和上传文件(头像)
查看>>
使用OVS
查看>>
键盘回收的几种方法
查看>>
Python(条件判断和循环)
查看>>
day4 linux安装python
查看>>
LeetCode Container With Most Water (Two Pointers)
查看>>
vue (v-if show 问题)
查看>>
https基础
查看>>
css3 canvas之刮刮卡效果
查看>>
并查集模板
查看>>
RESTful Mongodb
查看>>
BZOJ3237:[AHOI2013]连通图(线段树分治,并查集)
查看>>
如何提高Ajax性能
查看>>
Android--自定义加载框
查看>>
LINUX下 lamp安装及配置
查看>>
BZOJ3105 [cqoi2013]新Nim游戏
查看>>
困惑的前置操作与后置操作
查看>>
SDNU 1269.整数序列(水题)
查看>>
BZOJ 2118 Dijkstra
查看>>