前言
文的文字及图片过滤网络,可以学习,交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
![Python爬取今日头条指定用户发表的所有文章,视频,微头条](https://i-blog.csdnimg.cn/blog_migrate/a32ab83c7fa0803becebb70920f35043.png)
最近找工作,爬虫面试的一个面试题。涉及的反爬还是比较全面的,结果公司要求高,要解决视频链接时效性问题,凉凉。
直接上码:
导入请求
导入时间
从日期时间进口日期时间
进口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