今日头条 爬虫 java_爬虫实例:今日头条爬虫
今日头条是一个js动态加载的网站,尝试了两种方式爬取,一是页面直接提取,一是通过接口提取:
version1:直接页面提取
#coding=utf-8#今日头条
from lxml importetreeimportrequestsimporturllib2,urllibdefget_url():
url= 'https://www.toutiao.com/ch/news_hot/'
globalcounttry:
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)printresponse.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
printtype(title) #for x,y,z,q inzip(title,source,comment,stime):
count+= 1data={'title':x.text,'source':y.text,'comment':z.text,'stime':q.text}print count,'|',dataexcepturllib2.URLError, e:printe.reasonif __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来对时间进行验证
importrequestsimportjson
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)printresp.status_code
Jdata=json.loads(resp.text)#print Jdata
news = Jdata['data']for n innews:
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参数:
importtimeimporthashlibdefget_as_cp():
zz={}
now=round(time.time())print now #获取计算机时间
e = hex(int(now)).upper()[2:] #hex()转换一个整数对象为十六进制的字符串表示
printe
i= hashlib.md5(str(int(now))).hexdigest().upper() #hashlib.md5().hexdigest()创建hash对象并返回16进制结果
if len(e)!=8:
zz= {'as': "479BB4B7254C150",'cp': "7E0AC8874BB0985"}returnzz
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"}printzzif __name__ == "__main__":
get_as_cp()
今日头条 爬虫 java_爬虫实例:今日头条爬虫相关推荐
- 爬虫python程序实例-《Python爬虫开发与项目实战》pdf完整版
[实例简介] [实例截图] [核心代码] 目录 前言 基础篇 第1章 回顾Python编程2 1.1 安装Python2 1.1.1 Windows上安装Python2 1.1.2 Ubuntu上的P ...
- 今日头条 h5 源码 php,今日头条H5
[实例简介] 今日头条H5,移动端demo,HTML5. 今日头条H5,移动端demo,HTML5. [实例截图] [核心代码] 今日头条_移动端_demo └── 今日头条 ├── article. ...
- 今日头条搜索应该怎么做?头条搜索SEO排名和信息流排名课程
今日头条搜索应该怎么做? 今日头条不仅是一个搜索引擎平台,也是一个信息流平台,所以做头条SEO可以从这两个方面入手. 信息流排名: 头条搜索聚合了独立三方内容和自由平台内容,搜索频道有综合.资讯.视频 ...
- 今日头条搜索优化是什么,头条seo怎么做?
在聊今日头条搜索之前,先给大家介绍下今日头条搜索的背景. 头条搜索是今日头条孵化出来的一个搜索产品. 2019年8月,今日头条宣布头条搜索正式上线,当时上线的是站内搜索. 2020年2月,今日头条打造 ...
- python 今日头条增加流量_今日头条怎么快速增加推荐量和头条增加阅读量
今日头条是一款去年兴起的新闻平台,"你关注的就是头条"是它的标语,自从有了这个平台之后,各种新闻的发布越来越多,利用这个平台吸粉无数,尽管有一些低俗的新闻或头条发布,但都及时的被后 ...
- pythonscrapy爬虫_Python 爬虫:Scrapy 实例(二)
原标题:Python 爬虫:Scrapy 实例(二) 稍微增加点难度,做个所需项目多一点的,并将的结果以多种形式保存起来.我们就从网络天气预报开始. 首先要做的是确定网络天气数据的来源.打开百度,搜索 ...
- python 爬虫实例-Python 爬虫:Scrapy 实例(二)
原标题:Python 爬虫:Scrapy 实例(二) 稍微增加点难度,做个所需项目多一点的,并将的结果以多种形式保存起来.我们就从网络天气预报开始. 首先要做的是确定网络天气数据的来源.打开百度,搜索 ...
- python多线程爬虫实例-Python3多线程爬虫实例讲解代码
多线程概述 多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率.python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点, ...
- 以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
1.安装BeautifulSoup4 easy_install安装方式,easy_install需要提前安装 1 easy_install beautifulsoup4 pip安装方式,pip也需要提 ...
- python爬虫40个项目_python三个爬虫项目代码实例
本篇文章小编给大家分享一下python三个爬虫项目代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 爬取内涵段子: #encoding=utf-8 import ur ...
最新文章
- SQL:EXISTS的用法理解(转)
- javascript中的链表结构—双向链表
- day02: SQL_DML, oracle中sql的各种查询
- 高级concurrent包
- Boost - 序列化 (Serialization)
- 快速排序quicksort算法优化
- 2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)
- python基础之错误、调试(异常处理)
- 检查容器内的磁盘占用shell(check_container_disk.sh)
- SQL群集多实例卸载、安装
- F28335的ADC采集电压不对(ADC采集模块的输入信号的两个端子是:正极:ADCINAx ,负极是:ADCL0)
- 你竟然是这么神奇的 CSS
- 华为鸿蒙手机系统什么时候开始更新_华为鸿蒙系统2.0什么时候可以升级
- raisecom msg融合网关成都电信实战分享
- Informix 常用函数一
- Endnote 导入enw文件无响应及解决方法
- Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转...
- Deep Learning(深度学习) 中文翻译
- 2018年年初的面试经验谈
- python 一些模块的应用
热门文章
- oracle 查询数据的结果集导出
- 浅谈mysql 平衡二叉树理解_浅析二分查找,二叉树,平衡二叉树,B树,B+树
- RGB565 与RGB888的区别
- 基于人工兔优化算法的函数寻优和工程优化
- Excel-VBA:“银行家舍入” 与“国际标准的四舍五入”
- 码元速率的盲估计-包络谱法
- 知识分享 ITエンジニアの中途採用について③
- php如何数据库配置文件,php数据库配置文件一般做法分享
- [ArrayList删除元素] 你需要了解的ArrayList如何安全的删除重复元素/ list去重
- 产品经理常用词汇汇总