今日头条爬虫

Ryana Ryana     2022-09-19     400

关键词:

今日头条是一个js动态加载的网站,尝试了两种方式爬取,一是页面直接提取,一是通过接口提取:

version1:直接页面提取

#coding=utf-8
#今日头条
from lxml import etree
import requests
import urllib2,urllib

def get_url():
    url = 'https://www.toutiao.com/ch/news_hot/'
    global count
    try:
        headers = {
        'Host': 'www.toutiao.com',
        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 125LA; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)',
        'Connection': 'Keep-Alive',
        'Content-Type': 'text/plain; Charset=UTF-8',
        'Accept': '*/*',
        'Accept-Language': 'zh-cn',
        'cookie':'__tasessionId=u690hhtp21501983729114;cp=59861769FA4FFE1'}
        response = requests.get(url,headers = headers)
        print response.status_code
        html = response.content
        #print html
        tree = etree.HTML(html)
        title = tree.xpath('//a[@class="link title"]/text()')
        source = tree.xpath('//a[@class="lbtn source"]/text()')
        comment = tree.xpath('//a[@class="lbtn comment"]/text()')
        stime = tree.xpath('//span[@class="lbtn"]/text()')
        print len(title)   #0
        print type(title)  #<type 'list'>
        for x,y,z,q in zip(title,source,comment,stime):
            count += 1
            data = {
                'title':x.text,
                'source':y.text,
                'comment':z.text,
                'stime':q.text}
            print count,'|',data

    except urllib2.URLError, e:
        print e.reason

if __name__ == '__main__':
    count = 0
    get_url()

问题:title = tree.xpath('//a[@class="link title"]/text()')提取内容失败,用xpath check插件提取成功

 

 version2:通过接口提取

1.通过F12-network,查看?category=news_society&utm_source=toutiao&widen=1&max_behot_time=0&max_behot_time_tmp=0&tadrequire=true&as=A1B5093B4F12B65&cp=59BF52DB0655DE1的response

2.有效参数:

&category=news_society :头条类型,必填
&max_behot_time=0 &max_behot_time_tmp=0 :打开网页的时间(格林威治秒)和时间戳
&as=A1B5093B4F12B65&cp=59BF52DB0655DE1  :as和cp是用来提取和验证访问者页面停留时间的参数,cp对浏览器的时间进行了加密混淆,as通过md5来对时间进行验证

import requests
import json

url = 'http://www.toutiao.com/api/pc/feed/?category=news_society&utm_source=toutiao&widen=1&max_behot_time=0&max_behot_time_tmp=0&tadrequire=true&as=A1B5093B4F12B65&cp=59BF52DB0655DE1'
resp = requests.get(url)
print  resp.status_code    

Jdata = json.loads(resp.text)
#print Jdata
news = Jdata['data']

for n in news:
    title = n['title']
    source = n['source']
    groupID = n['group_id']
    print title,'|',source,'|',groupID

注:只爬取了7条数据

 

关于as和cp参数,有大神研究如下:

1.找到js代码,直接crtl+f 找as和cp关键字

function(t) {
    var e = {};
    e.getHoney = function() {
        var t = Math.floor((new Date).getTime() / 1e3),
            e = t.toString(16).toUpperCase(),
            i = md5(t).toString().toUpperCase();
        if (8 != e.length) return {
            as: "479BB4B7254C150",
            cp: "7E0AC8874BB0985"
        };
        for (var n = i.slice(0, 5), a = i.slice(-5), s = "", o = 0; 5 > o; o++) s += n[o] + e[o];
        for (var r = "", c = 0; 5 > c; c++) r += e[c + 3] + a[c];
        return {
            as: "A1" + s + e.slice(-3),
            cp: e.slice(0, 3) + r + "E1"
        }
    },

 2.模拟as和cp参数:

import time
import hashlib 

def get_as_cp():
    zz ={}
    now = round(time.time())
    print now  #获取计算机时间
    e = hex(int(now)).upper()[2:]  #hex()转换一个整数对象为十六进制的字符串表示
    print e 
    i = hashlib.md5(str(int(now))).hexdigest().upper() #hashlib.md5().hexdigest()创建hash对象并返回16进制结果
    if len(e)!=8:
        zz = {'as': "479BB4B7254C150",
            'cp': "7E0AC8874BB0985"}
        return zz
    n=i[:5]
    a=i[-5:]
    r = ""
    s = ""
    for i in range(5):
        s = s+n[i]+e[i]
    for j in range(5):
        r = r+e[j+3]+a[j]
    zz = {
            'as': "A1" + s + e[-3:],
            'cp': e[0:3] + r + "E1"
        } 
    print zz

if __name__ == "__main__":
    get_as_cp()

php+phantomjs实现今日头条的首页推送抓取

...效果也不是很好,记录一下吧。 认识的哥们最近在爬今日头条的数据,不过他是做java的。之前也想用php做点爬数据的东西,于是直接也搞今日头条,万一有不明白的地方还能有个人商量。话不多说,上点干货。  关... 查看详情

今日头条算法

...u014114990/article/details/48165781 日头条涉及到算法:(1)今日头条服务器1000台左右,通过代码实现的爬虫功能,在其他传媒的网站和门户上抓取各种信息。如果在网站上抓取到纸媒的内容,优先从纸媒门户上抓取信息(2)抓取... 查看详情

今日头条app数据爬虫demo(代码片段)

importjsonimporttimefromurllib.parseimportquotefromurllibimportrequestimportrequests"""1.综合2.视屏3.资讯4.小视屏5.图片6.用户7.音乐8.问答9.微头条10.话题"""tab_list=["pd=synthesis&from=search_tab","pd=video&from=video","pd=information&from=news","pd=xiaoshipin&fr... 查看详情

使用mitmproxy做今日头条爬虫链接分析(代码片段)

importpickleimportchardetfrommitmproxyimportctxfrompprintimportpprintheads_file=‘header.txt‘body_file=‘body.txt‘#mitmdump-stest.py#Dalvik/2.1.0(Linux;U;Android8.1.0;MI8MIUI/8.8.31)defrequest(flow):#只是修改请求浏览器请求头为MitmProxy#flow.request.headers[‘User-Agent‘]=‘Moz... 查看详情

递归爬取今日头条指定用户一个月内发表的所有文章,视频,微头条(代码片段)

最近找工作,爬虫面试的一个面试题。涉及的反爬还是比较全面的,结果公司要求高,要解决视频链接时效性问题,凉凉。直接上代码importrequestsimporttimefromdatetimeimportdatetimeimportjsonimportexecjsimporthashlibimportreimportcsvfromzlibimportcrc32fr... 查看详情

今日头条和今日头条极速版有什么区别

3C数码您的浏览器不支持HTML5视频zymedia(\'video\')参考技术A今日头条和今日头条极速版区别为:安装包大小不同、占用运行内存不同、特色功能不同。一、安装包大小不同1、今日头条普通版:今日头条普通版的安装包大小为22.8M。2... 查看详情

如何区分今日头条与今日头条极

参考技术A今日头条和今日头条极速版区别有:内存大小不一样、定位人群不一样、功能特色不一样、界面设计不一样。1、内存大小不一样今日头条极App:4.7M。今日头条极速版App:安装包4.7M。2、定位人群不一样普通版:面向的... 查看详情

“今日头条”和“今日头条极速版”有啥不同?

...A面对客户人群不一样,界面不一样,功能体验不一样。今日头条界面比较复杂,体验功能更加多元化。今日头条极速版界面简单,功能体验比较少。今日头条:基于个性化推荐引擎技术,根据每个用户的兴趣、位置等多个维度... 查看详情

今日头条的惊惶时刻

今日头条到底怎么了?昨天上午,国家知识产权局用一纸决定书驳回了今日头条关于UC一条专利的无效宣告请求,这意味着今日头条很可能要面临巨额的专利侵权罚款。不过UC并不是唯一和今日头条“对簿公堂”的企业。在1月26... 查看详情

今日头条的核心架构解析

今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。一、产品背景今日头条是为用户提供个性化资讯客户端。下面就... 查看详情

今日头条

<resources><stringname="app_name">头条</string><stringname="openDrawer">今日头条</string><stringname="closeDrawer">用户目录</string></resources>/****/<?xmlvers 查看详情

如何在头条做营销:2022今日头条营销价值洞察报告.pdf(附下载链接)

本报告共包含如下四大部分:1、趋势:品牌内容营销难题;2、人群:今日头条人群特征;3、内容:今日头条内容生态;4、商业:今日头条商业生态。更多细节和行研干货资料请到小程序省时查报告中查看全文并下载。 查看详情

今日头条核心技术“个性推荐算法”揭秘

今日头条核心技术“个性推荐算法”揭秘最近面试华兴资本,他们比较关注今日头条算法的实现,今天特转载网上今日头条算法解密  【IT168 评论】互联网给用户带来了大量的信息,满足了用户在信息时代对信息的需求,... 查看详情

go--今日头条架构

夏绪宏,今日头条架构师,专注对高性能大规模Web架构,云计算、性能优化、编程语言理论等方向,PHPcommitter,HHVM项目贡献者。2009加入百度,先后从事大规模IDC自运维设施建设、云计算平台的架构设计、贴吧业务性能优化、百... 查看详情

[新浪]今日头条被高估了吗?

今日头条被高估了吗?   欢迎关注“创事记”的微信订阅号:sinachuangshiji  文/华生  来源:砺石商业评论(ID:libusiness)  砺石导言  对于今日头条这样一家缺乏核心竞争力,并且始终头顶较大法律与道德风险... 查看详情

今日头条

今日头条新闻选择(省?市)城市北京上海天津重庆香港澳门台湾?更多安徽?更多福建?更多甘肃?更多广东?更多广西?更多贵州?更多海南?更多河北?更多河南?更多黑龙江?更多湖北?更多湖南?更多吉林?更多江苏?更多江西?更多辽宁?更多... 查看详情

今日头条

importrequestsimportreimportjsonimportosfromurllibimportrequestforiinrange(0,60,20):url=‘https://www.toutiao.com/search_content/?offset=&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=t 查看详情

超级简单的下载今日头条和西瓜视频的方法

我们每天用今日头条看新闻资讯,有时候看到一个视频,想要保存下来,但今日头条App里没有提供保存视频的功能。这个时候我们需要借助第三方工具来下载视频,今天介绍一个超级好用的工具,不需要安装任何软件和插件,并... 查看详情