2019/10/5 最新头条爬虫代码---亲测有效

import requestsfrom urllib.parse import urlencode# requests内置的状态码,可判断url响应是否正确from requests import codesimport osfrom hashlib import md5from multiprocessing.pool import Poolimport reimport jsonimport bs4def get_page(offset):    # 必须的头请求头信息    headers = {        ‘cookie‘: ‘tt_webid=6667396596445660679; csrftoken=3a212e0c06e7821650315a4fecf47ac9; tt_webid=6667396596445660679; WEATHER_CITY=%E5%8C%97%E4%BA%AC; UM_distinctid=16b846003e03d7-0dd00a2eb5ea11-353166-1fa400-16b846003e1566; CNZZDATA1259612802=2077267981-1561291030-https%253A%252F%252Fwww.baidu.com%252F%7C1561361230; __tasessionId=4vm71cznd1561363013083; sso_uid_tt=47d6f9788277e4e071f3825a3c36a294; toutiao_sso_user=e02fd616c83dff880adda691cd201aaa; login_flag=6859a0b8ffdb01687b00fe96bbeeba6e; sessionid=21f852358a845d783bdbe1236c9b385b; uid_tt=d40499ec45187c2d411cb7bf656330730d8c15a783bb6284da0f73104cd300a2; sid_tt=21f852358a845d783bdbe1236c9b385b; sid_guard="21f852358a845d783bdbe1236c9b385b|1561363028|15552000|Sat\054 21-Dec-2019 07:57:08 GMT"; s_v_web_id=6f40e192e0bdeb62ff50fca2bcdf2944‘,        ‘user-agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36‘,        ‘x-requested-with‘: ‘XMLHttpRequest‘,        ‘referer‘: ‘https://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D‘,    }    # 获得的真是url必须的参数构造    params = {        ‘aid‘: ‘24‘,        ‘app_name‘: ‘web_search‘,        ‘offset‘: offset,        ‘format‘: ‘json‘,        ‘keyword‘: ‘街拍‘,        ‘autoload‘: ‘true‘,        ‘count‘: ‘20‘,        ‘en_qc‘: ‘1‘,        ‘cur_tab‘: ‘1‘,        ‘from‘: ‘search_tab‘,        ‘pd‘: ‘synthesis‘,    }    # 真实url的起始url    base_url = ‘https://www.toutiao.com/api/search/content/?‘    # python内置库解码后的真实url    url = base_url + urlencode(params)    try:        resp = requests.get(url, headers=headers)        # 是正确的响应,即200        if 200 == resp.status_code:            return resp.json()        else:            return None    except requests.ConnectionError:        print("请求索引页面错误!")        return Nonedef get_images(json):    # 街拍的总数据    if json.get(‘data‘):        data = json.get(‘data‘)        for item in data:            if item.get(‘title‘) is None:                continue            title = re.sub(‘[\t]‘, ‘‘, item.get(‘title‘))            images = item.get(‘image_list‘)            for image in images:                # 修复了url更改导致了爬取到的部分是小图的问题                for each in image.get(‘url‘):                    if each == ‘x‘:                        origin_image = re.sub("list/190x124", "large", image.get(‘url‘))                        break                    else:                        origin_image = re.sub("list", "large", image.get(‘url‘))                yield {                    ‘image‘: origin_image,                    ‘title‘: title                }

def save_image(item):    if not os.path.exists(item.get(‘title‘)):        os.mkdir(item.get(‘title‘))    try:        response = requests.get(item.get(‘image‘))        if response.status_code == 200:            file_path = ‘{0}/{1}.{2}‘.format(item.get(‘title‘), md5(response.content).hexdigest(), ‘jpg‘)            if not os.path.exists(file_path):                with open(file_path, ‘wb‘) as f:                    f.write(response.content)            else:                print(‘Already Downloaded‘, file_path)    except requests.ConnectionError:        print(‘Failed to Save Image‘)

def main(offset):    # 以什么倍数来增长    json = get_page(offset)    print(json)    for item in get_images(json):        print(item)        save_image(item)

GROUP_START = 0GROUP_END = 20

if __name__ == ‘__main__‘:    pool = Pool()    groups = ([x * 20 for x in range(GROUP_START, GROUP_END + 1)])    pool.map(main, groups)    pool.close()    pool.join()

原文地址:https://www.cnblogs.com/gglll/p/11625386.html

时间: 2024-10-30 01:04:54

2019/10/5 最新头条爬虫代码---亲测有效的相关文章

visio2019专业版最新激活密钥,亲测可用

今天破例给大家分享几组visio2019专业版最新激活密钥,亲测可用DNFFH-9973Q-H4QWK-TF22F-8B7RKNBMFP-RCPP7-6Y8VJ-GPJDW-VH8MX 87NCM-887RB-7GMCR-23CR3-63C79FB6GH-NKBB9-HK2CT-TK6XB-KD9H9RTXN8-FW6J2-J3PMQ-DGGC6-XQC79JK76F-P2NKQ-CXY7X-76DD7-JQPBX 当然,每个密钥都具有时效性和激活次数限制,如果密钥失效或者被用完,小编vx: j

Pycharm2019最新激活注册码(亲测有效)

PyCharm是由著名的JetBrains公司所打造的一款功能强大的Python IDE,它具有一般IDE都具备的功能,并且使用起来非常方便好用.最近需求PyCharm激活码的网友非常多,小编就在这里给大家分享一下PyCharm2019最新可用的激活注册码.激活Pycharm专业版的方法有很多,小编在这里主要给大家分享最有效的两种,一种是使用最新可用的注册激活码,一种是使用破解补丁的方法,这种方法虽然麻烦点,但是基本是永久激活,一劳永逸. 一.Pycharm 2019 最新有效的激活码(acti

Pycharm2019年11月最新激活注册码(亲测有效)

PyCharm是由著名的JetBrains公司所打造的一款功能强大的Python IDE,它具有一般IDE都具备的功能,并且使用起来非常方便好用.最近需求PyCharm激活码的网友非常多,小编就在这里给大家分享一下PyCharm2019最新可用的激活注册码.激活Pycharm专业版的方法有很多,小编在这里主要给大家分享最有效的两种,一种是使用最新可用的注册激活码,一种是使用破解补丁的方法,这种方法虽然麻烦点,但是基本是永久激活,一劳永逸. 一.Pycharm 2019 最新有效的激活码(acti

xcode10 不联想代码(亲测有效)

今天开始做新的项目,拉好框架发现导入头文件不联想,手动导入头文件,发现文件里的方法.类名不联想,不报错,只要手动敲的也都能用.这是一个很蛋疼很可怕的事情,然后去网上找方法,然后一大推的清理缓存的方法: rm -rf ~/Library/Developer/Xcode/DerivedData,也许他们真的用这种方法解决了自己的问题,但是我之前也出现过类似的问题,貌似每次也都用过这方法,好像没有一次成功过. 找了半天,又找个方法:Build Settings -> User Header Searc

ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path);与DirectoryInfo directory = new DirectoryInfo (Path);) 1获取文件信息 在知道文件相对路径的情形,下面代码可以获取文件的详细信息 1 public static void fileinfo(string Path) 2 { 3 Path = S

2019.10.27 头条面试准备

2019.10.27 头条面试准备 个人简历 2019.06 - 至今上海华为开发工程师 实习部门:5G开发部 项目:网站开发.运维开发.数据处理 2019.06至今华为实习 Python+Django+Javascript+Nginx+rabbitMQ+ELK 基于 Django 框架使用 Python 开发网站基础进程监控系统,实现进程异常记录.进程异常自动恢复.发送告警邮件,并且用 Web 界面进行展示和管理.整个框架由本人独立设计完成并上线,保证了部门 Web 的稳定. 使用Python

18年10月份最新免费申请微软OneDrive5TB云盘超详细教程!(已亲测!)

本人已于今天10月23日亲测,成功获取微软OneDrive5T云盘! 第一步:.打开申请链接学生版:https://signup.microsoft.com/signup?sku=student教师版:https://signup.microsoft.com/signup?sku=faculty (随便哪个都可以,我申请的时候点的是学生版的) 第二步:打开临时邮箱http://mail.51.al:3000http://mail.mzr.mehttp://sysu.edu.plhttp://od

【爬虫】关于企业信用信息公示系统-加速乐最新反爬虫机制

( ̄▽ ̄)~*又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构. 升级后网站的层次结构并没有太多变化,表面上是国家企业信用信息公示系统 的验证码又升级了.之前是 点按后滑动拼图方式: 现在的验证码主要是按顺序点击图片汉字验证码,但也不排除会出现以前的点按拖动验证码: 验证码的破解这里就不详细介绍了,需要的可以私信我们一起讨论研究下,详细可参考极验验证码破解-源码+破解手册,极验二代和三代验证码破解的方式基本都是一个套路的

Node.js(十三)——Promise重构爬虫代码

在重构代码之前,先要了解下什么是https? https协议:基于ssl/tls的http协议,所有的数据都是在 ssl/tls协议的封装之上传输的,也就是说https协议是在http协议基础上 添加了ssl/tls握手以及数据加密传输,因此这就是两者之间最大的区别. https模块专门处理加密访问的,区别在于搭建https服务器的时候需要有ssl证书. 模拟搭建https服务器 var https = require('https') var fs = require('fs')//文件系统模