Python爬取今日头条指定用户发表的所有文章,视频,微头条

本文介绍了如何使用Python爬取今日头条用户的所有文章、视频和微头条。内容包括面对的反爬策略以及如何处理视频链接的时效性问题。虽然最终因公司要求未能达成预期,但提供了有价值的爬虫实践。
摘要由CSDN通过智能技术生成

前言

文的文字及图片过滤网络,可以学习,交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

Python爬取今日头条指定用户发表的所有文章,视频,微头条

 

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

直接上码:

导入请求
导入时间
从日期时间进口日期时间
进口JSON 
进口execjs 
进口hashlib 
进口重新
导入CSV 
从zlib的进口CRC32 
从BASE64进口b64decode 
进口随机
进口urllib3 
进口OS 
进口线程
从队列进口队列
从LXML进口etree 
#查看JS版本信息
#打印( execjs.get()。name)
#屏蔽ssl验证
警告urllib3.disable_warnings()
“”“ 
需要nodejs环境,需要修改subprocess.py文件内部的类Popen(object)类中的__init __(.. encode ='utf -8)否则调用js文件时会报错
请求列表页面时。py文件中的ua头要与js文件中一致,不然很难请求到数据,请求详情页时要用ua池否则会封浏览器/ ip 
会有一些空白表格,是因为该账号七位数为发布内容,或者该账号被封禁
输出结果在此文件所在根目录下/ toutiao / 
右键运行此py文件,newsign.js文件,toutiao.csv文件需要在同一文件夹内
爬取的视频有时效性
“”“” 
#定义ua池
def标头( ): 
#各种PC端
user_agent_list = [ 
#歌剧
“的Mozilla / 5.0(Windows NT的6.1; WOW64)为AppleWebKit / 537.36(KHTML,例如Gecko)铬/ 39.0.2171.95 Safari浏览器/ 537.36 OPR / 26.0.1656.60”,
“歌剧院/ 8.0(Windows NT 5.1; U; zh)“,
” Mozilla / 5.0(Windows NT 5.1; U; zh; rv:1.8.1)Gecko / 20061208 Firefox / 2.0.0 Opera 9.50“,
” Mozilla / 4.0(compatible; MSIE 6.0; Windows NT 5.1; en)Opera 9.50“,
#Firefox 
” Mozilla / 5.0(Windows NT 6.1; WOW64; rv:34.0)Gecko / 20100101 Firefox / 34.0“,
“ Mozilla / 5.0(X11; U; Linux x86_64; zh-CN; rv:1.9.2.10)Gecko / 20100922 Ubuntu / 10.10(maverick)Firefox / 3.6.10”,
#Safari 
“ Mozilla / 5.0(Windows NT 6.1; WOW64 )AppleWebKit / 534.57.2(KHTML,例如Gecko)版本/5.1.7 Safari / 534.57.2“,
#chrome 
” Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 39.0。 2171.71 Safari / 537.36”,
“ Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.11(KHTML,例如Gecko)Chrome / 23.0.1271.64 Safari / 537.11”,
“ Mozilla / 5.0(Windows; U; Windows NT 6.1; en-美国)AppleWebKit / 534.16(KHTML,例如Gecko)Chrome / 10.0.648.133 Safari / 534.16“,
#360 
” Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 30.0.1599.101 Safari / 537.36“,
“ 
淘宝浏览器
”,“ 淘宝浏览器” “ Mozilla / 5.0(Windows NT 6.1; WOW64; Trident / 7.0; rv:11.0),如Gecko”,#淘宝浏览器“ Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 536.11(KHTML,如Gecko)Chrome / 20.0 .1132.11 TaoBrowser / 2.0 Safari / 536.11“,
#猎豹浏览器
” Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.1(KHTML,如Gecko)Chrome / 21.0.1180.71 Safari / 537.1 LBBROWSER“,
” Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4 .0E; LBBROWSER)”,
“ Mozilla / 4.0(兼容; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)”,
#QQ浏览器
“ Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4 .0C; .NET4.0E; QQBrowser / 7.0.3698.400)“,
” Mozilla / 4.0(兼容; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)“,
#sogou浏览器
“ Mozilla / 5.0(Windows NT 5.1)AppleWebKit / 535.11(KHTML,例如Gecko)Chrome / 17.0.963.84 Safari / 535.11 SE 2.X MetaSr 1.0”,
“ Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 5.1; Trident) /4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)“,
#maxthon浏览器
” Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,like Gecko) )Maxthon / 4.4.3.4000 Chrome / 30.0.1599.101 Safari / 537.36“,
#UC浏览器
“ Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 38.0.2125.122 UBrowser / 4.0.3214.0 Safari / 537.36”,
] 
UserAgent = random.choice(user_agent_list)
标头= {'User- Agent':UserAgent} 
返回标头
headers_a = { 
“ User-Agent”:“ Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 78.0.3904.87 Safari / 537.36”,
} 
#代理IP 
代理= { 
的'http': '183.57.44.62:808' 
} 
#饼干值
饼干= { 's_v_web_id': 'b68312370162a4754efb0510a0f6d394'} 
#获取_signature 
DEF get_signature(USER_ID,max_behot_time):
具有开放('newsign.js ','r',encoding ='utf-8')如f: 
jsData = f.read()
execjs.get()
ctx = execjs.compile(jsData).call('tac',str(user_id)+ str(
max
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
今日头条爬虫技术说明 ========== 整体思路 -------- 1. 抓取今日头条app的数据包 2. 分析数据包,找出请求的数据(如文章列表,文章url等) 3. 根据文章url等信息,抓取文章内容 4. 若文章中包含视频,则取视频url,然后下载 具体实现 ------ ### 一、抓包 ### 1. 工具:`Fiddler`、 `android`手机、`google浏览器` 2. 步骤: (1)本示例采用[Fiddler](http://fiddler2.com/ "Fiddler")来抓包,安装到电脑,我的电脑是win10 (2)具体配置及使用请见[http://jingyan.baidu.com/article/03b2f78c7b6bb05ea237aed2.html](http://jingyan.baidu.com/article/03b2f78c7b6bb05ea237aed2.html "百度经验") (3)打开今日头条app,开始抓包,抓取到的包如下:![](http://i.imgur.com/fC3y96p.png) (4)经分析得知左侧的json文件及为文章列表,如图![](http://i.imgur.com/I2Z8Iph.png) 如右侧第一个content所指的json文件,文件内容为![](http://i.imgur.com/lwaDLHP.png)此时手机上的信息为 <img src = "http://i.imgur.com/LFSL1AA.png" width = "40%"> 可得上面的结论正确 ### 二、分析 ### 1. 分析所抓到的文章列表数据包:大致分为两类,一类是有视频文章,一类则是没有视频文章。 有视频文章json内容里均有`video_id`这个key,如下图所示:![](http://i.imgur.com/T4hqaIc.png) 2. 没有视频文章:json文件内容均包含`title`、 `abstract`、 `article_url`等信息,具体内容如下. -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值