python爬取今日头条评论,python爬取头条付费视频

python爬虫 爬取今日头条信息 """" 进入头条首页,在右边输入关键字,进入搜索页面,主要爬取搜索的到的图片以及图片的标题 """" """" python版本:python3.6.5 """" #手动输入搜索关键字和要爬取的页,默认从第一页开始爬取 end_page = int(input('请输入结束页面:')) keyword = input('请输入查找 阅读详情

大家好,小编为大家解答python抓取今日头条中的广告的问题。很多人还不知道爬虫能抓取今日头条数据吗,现在让我们一起来看看吧!

近年来今日头条做的可谓是风生水起,自上线以来,围绕内容载体和分发方式两个维度不断丰富,至今已衍生出图文、视频、微头条、专栏、搜索、直播等多种内容形式。根据最新中国联通发布的App大数据排行榜,今日头条稳居新闻资讯行业NO.1,活跃用户(MAU)达1.6亿python的游戏编程软件

面对这样一款内容丰富、具有海量数据的应用App,如果不学会爬取数据,岂不是可惜呢?今天小编以图片数据为例,教你如何爬取今日头条的数据,完整版代码,请在公众号后台回复:头条,如果你还对视频、排行榜等比较感兴趣,可以看之前文章参考。本篇文章你将收获如下技术要点:

  • Ajax数据爬取技术
  • 进程池
  • 容错机制
  • 正则表达式

话不多说,以下是具体内容和代码。

网页分析

当对网页进行分析时,我们可能会发现:很多信息都没有出现在源代码里面,比如你刷网页,那些新刷出的网页就是通过Ajax接口加载出来的,这是一种异步加载方式,只有请求这个ajax接口,然后服务器后台收到这个接口信息,才会把数据返回。现在越来越多的网页都是采用这个异步加载的方式,所以爬虫就变得没那么容易了,我们现在直接开始进行网页分析吧!

通过F12我们可以,我们可以发现如下接口中可以找到上述内容
在这里插入图片描述
通过网页分析我们可以知道,如果需要把需要对图片保存本地,我们需要进行两次URL的请求,所以在代码中将请求的headers设置为全局变量。

获取数据

首先请求最开始的页面:

https://www.toutiao.com/search/?keyword=%E7%BE%8E%E5%A5%B3
1.获取json数据

我们不能这样直接把页面交给requests库去请求,因为这是一个ajax接口,如果不加入参数,很可能让你输入验证码、拉动验证等反爬措施,我们可以通过加入参数来规避,具体措施如下:


    global headers
    # headers 
    headers = {
        'cookie': 'WEATHER_CITY=%E5%8C%97%E4%BA%C; csrftoken=6ae2b955b45e59a749e6dc65446acbff; ttcid=9b098a659aa54ff399b6ae76bb252b1e27; SLARDAR_WEB_ID=eb1c77c9-a873-4dbb-8c4c-ac124db1cd6c; UM_distinctid=1fd3813a87ed-0be1183a73772d-30607c00-13c680-171fd3813a9e50; sso_auth_status=d824cbb6753cb805f8a44b6c02e6ec7b; sso_uid_tt=5e677205437e3399c080159feb6a5898; sso_uid_tt_ss=5e677205437e3399c080159feb6a5898; toutiao_sso_user=d91c1fbc6b932a9a5c2fa9a111a50069; toutiao_sso_user_ss=d91c1fbc6b932a9a5c2fa9a111a50069; passport_auth_status=81fc37a1830449af18032d4b4796a32b%2C09dffc241bb0f3ec6c656177e0cc0bb6; sid_guard=4dabbd1e48fd80ecdc0973fdce2d1b0c%7C1590904063%7C5184000%7CThu%2C+30-Jul-2020+05%3A47%3A43+GMT; uid_tt=0115b2ab6e9821b54e26ce6c41059d92; uid_tt_ss=0115b2ab6e9821b54e26ce6c41059d92; sid_tt=4dabbd1e48fd80ecdc0973fdce2d1b0c; sessionid=4dabbd1e48fd80ecdc0973fdce2d1b0c; sessionid_ss=4dabbd1e48fd80ecdc0973fdce2d1b0c; _ga=GA1.2.904277146.1590904500; tt_webid=6833011630063027725; tt_webid=6833011630063027725; CNZZDATA1272960458=2004357243-1589089930-https%253A%252F%252Fwww.baidu.com%252F%7C1590932876; __tasessionId=m5pjsml5i1592026825367; s_v_web_id=kbd7o0e4_ERp4SO3y_dOQY_4tb4_8sbP_0AbZGAADrqJ8; tt_scid=eAuATFNHP-crXarEGEJsNDrcAI27CwfojNjh89EE6DQrHcqy2CfAC-YNcpkuMcSv1796',
        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
        'referer': 'https://www.toutiao.com/search/?keyword=%E7%BE%8E%E5%A5%B3',
        'x-requested-with': 'XMLHttpRequest'
    }  
    #加入参数
    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',
        'timestamp': int(time.time())
    }
    url = 'https://www.toutiao.com/api/search/content/?' + urlencode(params)  # 构造url
    url = url.replace('=+', '=')  # 网址根本不一样
    try:
        r = requests.get(url, headers=headers, params=params)
        r.content.decode('utf-8')
        if r.status_code == 200:
            return r.json()  # 返回json格式 因为全是字典类型
    except requests.ConnectionError as e:
        print(e)
2.获取标题和图片网址
def get_image(json):  # 获取图片
    if json.get('data'):  # 如果这个存在
        for item in json.get('data'):
            if item.get('title') is None:
                continue  # 如果标题是空值
            title = item.get('title')  # 获取标题
            if item.get('article_url') == None:
                continue
            url_page = item.get('article_url')
            # print(url_page)
            rr = requests.get(url_page, headers=headers)

            if rr.status_code == 200:
                pat = '<>var BASE_DATA = .*?articleInfo:.*?content:(.*?)groupId.*?;</>'
                match = re.search(pat, rr.text, re.S)
                if match != None:
                    result = re.findall(r'img src&#x3D;\\&quot;(.*?)\\&quot;', match.group(), re.S)
                    yield {
                        'title': title,
                        'image': result
                    }
3.图片保存
def save_image(content):
    path = '/Users/******/'  # 路径
    if not os.path.exists(path):  
        os.mkdir(path)
        os.chdir(path)
    else:
        os.chdir(path)

    if not os.path.exists(content['title']):  
        if '\t' in content['title']:  
            title = content['title'].replace('\t', '')  
            os.mkdir(title + '//')
            os.chdir(title + '//')
            print(title)
        else:
            title = content['title']
            os.mkdir(title + '//') 
            os.chdir(title + '//')
            print(title)
    else:  # 如果存在
        if '\t' in content['title']:  
            title = content['title'].replace('\t', '')  
            os.chdir(title + '//')
            print(title)
        else:
            title = content['title']
            os.chdir(title + '//')
            print(title)
    for q, u in enumerate(content['image']):  # 遍历图片地址列表
        u = u.encode('utf-8').decode('unicode_escape')

        # 先编码在解码 获得需要的网址链接
        #  开始下载
        r = requests.get(u, headers=headers)
        if r.status_code == 200:
            with open(str(q) + '.jpg', 'wb') as fw:
                fw.write(r.content)
                print(f'该title----->下载{q}张')

加入容错机制

def main(offset):
    json = get_page(offset)
    get_image(json)
    for content in get_image(json):
        try:
            # print(content)
            save_image(content)
        except FileExistsError and OSError:
            continue
4.多进程爬取
pool = Pool()
groups = [j * 20 for j in range(8)]
pool.map(main, groups) 
pool.close()
pool.join()
成果展示

通过上述几步,小编已经将今日头条的数据爬取下来了。实践出真知,实操起来慢慢体会爬虫过程中的要点和注意点,对其他网页的分析和爬取会有益处,不建议拿了代码爬一下就结束了。

技术交流

欢迎转载、收藏本文,码字不易,有所收获点赞支持一下!

为方便进行学习交流,本号开通了技术交流群,添加方式如下:

直接添加小助手微信号:pythoner666,备注:CSDN+python,或者按照如下方式添加均可!
在这里插入图片描述

利用搜索关键字爬取今日头条新闻评论信息案例 利用搜索关键字爬取今日头条新闻评论信息案例 爬虫4步骤: 1.分析网页 2.对网页发送请求,获取响应 3.提取解析据 4.保存据 本案例所用到的模块 import requests import time import csv 案例网址:https://www.toutiao.com/ 一、分析网页 如果我们想通过关键字来搜索爬取新闻的评论信息,就需要找到它们的接口,但是这个接口应该如何找呢,其实也不难找,我们在首页中的搜索栏中,输入想搜索的关键字,点击搜索: 然后网址会给我们跳转到一个搜索出来该关键 阅读详情

相关推荐

爬取今日头条-街拍,了解Ajax分析的流程、Ajax分页的模拟以及图片的下载

爬取今日头条-街拍什么是Ajax查看并分析请求解析内容图片下载:代码实现运行结果: 什么是Ajax Ajax,即异步的Javascript和XML,利用Javascript在保证页面不被刷新、页面链接不改变的情况下与服务器交换据并更新部分网页的技术.想进一步了解的可以到W3School中学习. 查看并分析请求 1.查看请求: 以Chrome浏览器为例,用Chrome浏览器打开今日头条-街拍的链接...

狼性书生 405

基础11·今日头条NBA图片抓取(Ajax渲染页面的抓取,URL中params的添加)

import requests, pprint, json, time, os def get_text(url, offset): headers = { 'accept': 'application/json, text/javascript', 'accept-encoding': 'gzip, deflate, br', 'ac...

楼下小白 588

ajax据get请求params详解,分析Ajax请求并抓取今日头条

思路想法AJAX先简单扫盲一下什么是AJAX,个人建议如果以下提到的几个名词你都没听说过或者只简单用过,那么你最好还是回头把每一项都补一补,虽然这对写爬虫帮助不大,但是对你深入理解计算机这门学科帮助很大。须知不管是语言,还是框架都有其存在的目的,搞清楚了这些,学起东西来就相对容易了。AJAX (Asynchronous JavaScript and XML),直译的话就是异步的JavaScript...

weixin_39788969的博客 1514

python爬取头条付费专栏视频_Python3从零开始爬取今日头条的新闻【五、解析头条视频真实播放地址并自动下载】...

Python3从零开始爬取今日头条的新闻【一、开发环境搭建】Python3从零开始爬取今日头条的新闻【二、首页热点新闻抓取】Python3从零开始爬取今日头条的新闻【三、滚动到底自动加载】Python3从零开始爬取今日头条的新闻【四、模拟点击切换tab标签获取内容】Python3从零开始爬取今日头条的新闻【五、解析头条视频真实播放地址并自动下载】所谓爬虫,就是通过编程的方式自动从网络上获取自己所需...

weixin_39671509的博客 2277

python可以爬取的内容有什么_Python爬取视频(其实是一篇福利)过程解析 Python爬虫可以爬取什么...

如何用python爬取视频网站的据如何用python爬取js渲染加载的视频文件不是每个人都有资格说喜欢,也不是每个人都能选择伴你一生!有哪位大神指导下,有些视频网站上的视频文件是通过 js 加载的,不知道可以使用selenium+ phantomjs PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执...

weixin_39878646的博客 391

python爬取app播放的视频,Python爬虫工程师必学——App据抓取实战视频教程

爬虫分为几大方向,WEB网页据抓取、APP据抓取、软件系统据抓取。本课程主要为同学讲解如何用python实现App据抓取,课程从开发环境搭建,App爬虫必备利器详解,项目实战,到最后的多App端据抓取项目集成,让你掌握App据抓取的技能,向更优秀的python爬虫工程师迈进!环境搭建安卓模拟器环境安装及介绍抓包工具安装及介绍自动化控制工具安装及介绍Docker环境安装及介绍抓包工具Fi...

weixin_26731219的博客 1382

Python爬虫笔记技术篇

目录 前言 requests出现中文乱码 使用代理 BeautifulSoup的使用 Selenium的使用 基础使用 Selenium加载时间过长 Selenium使用Chrome,隐藏Chrome ...

dengtangda9444的博客 392

分享66个Python爬虫源码总有一个是你想要的

使用springboot搭建的音乐,电影,书栈,视频教程app的后台项目,所有据来自互联网,使用python爬虫抓取,涉及,负载均衡,redis缓存,JwtToken权限验证,拦截器,日志记录,erauka服务治理,mybatis,spring-data-jpa,swagger等,持续更新中。Python编写的爬虫合集,欢迎Star(豆瓣,某度翻译,DY,优酷,B站,今日头疼,笔趣阁,Unsplash,起点中文网,一点资讯,空气质量, 酷酷漫画)深交所公司年报下载官方不限制,所以这个是合法的吧。

weixin_47730343的博客 1074
上一篇: python切片操作 [:-1],python切片操作 [::2]
下一篇: 毕业论文查重60%还有救吗
pingf123
博客等级 码龄3年 8030粉丝 · 752原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值