靖江市企业党建文化标识自媒体网

「从零开始学爬虫」采集腾讯新闻数据

l 采集网站

【场景描述】采集腾讯新闻数据。

【源网站介绍】腾讯网从2003年创立至今,已经成为集新闻信息,区域垂直生活服务、社会化媒体资讯和产品为一体的互联网媒体平台。

【使用工具】前嗅ForeSpider数据采集系统,免费下载:ForeSpider免费版本下载地址

l 采集网站

【入口网址】https://new.qq.com/d/bj/

【采集内容】

采集腾讯网新闻的标题和正文内容。



【采集效果】如下图所示:



l 思路分析

配置思路概览:

l 配置步骤

1. 新建采集任务

选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可,点击下一步。



2.获取翻页链接

此类翻页的翻页链接在页面请求中,需要先找到请求链接,然后用脚本拼出链接。具体操作步骤如下所示:

①在浏览器中打开页面后,点击F12,清空所有请求后,刷新页面。



②鼠标往下浏览新闻,会发现出现很多新闻,右侧也出现很多请求。观察请求,找出翻页请求链接。



将多个请求链接复制出来,观察链接规律:

https://i.news.qq.com/trpc.qqnews_web.kv_srv.kv_srv_http_proxy/list?sub_srv_id=bj&srv_id=pc&offset=20&limit=20&strategy=1&ext={%22pool%22:[%22top%22],%22is_filter%22:10,%22check_type%22:true}

https://i.news.qq.com/trpc.qqnews_web.kv_srv.kv_srv_http_proxy/list?sub_srv_id=bj&srv_id=pc&offset=40&limit=20&strategy=1&ext={%22pool%22:[%22top%22],%22is_filter%22:10,%22check_type%22:true}

https://i.news.qq.com/trpc.qqnews_web.kv_srv.kv_srv_http_proxy/list?sub_srv_id=bj&srv_id=pc&offset=60&limit=20&strategy=1&ext={%22pool%22:[%22top%22],%22is_filter%22:10,%22check_type%22:true}


③观察发现请求链接中只有一个参数不同,分别为20、40、60,该参数规律为:翻页数*20,根据这一规律,使用脚本拼写翻页链接。选中链接抽取后,打开脚本窗口:



④写一个for循环来拼取翻页链接:

脚本如下:

for(var i=0;i<20;i++)//写一个for循环来拼取翻页链接
{
var j=i*20;//定义变量j为翻页数*20
url u;//定义一个url
u.urlname = "https://i.news.qq.com/trpc.qqnews_web.kv_srv.kv_srv_http_proxy/list?sub_srv_id=bj&srv_id=pc&offset="+j+"&limit=20&strategy=1&ext={%22pool%22:[%22top%22],%22is_filter%22:10,%22check_type%22:true}";//根据翻页链接规律拼链接 u.title =i;//返回url名称
u.tmplid = 2;//关联模板2
u.entryid = CHANN.id;
RESULT.AddLink(u);//结束,固定搭配
}



⑤脚本写完以后,点击保存,然后点击采集预览,即可看到拼好的链接。



3.抽取列表链接

①继续观察页面翻页请求中的源码内容,发现新闻内容在源码data后边的list后边的json串中。如下图所示:



②新闻列表链接的标题和新闻分别是每个对象的title和url值。



③回到ForeSpider系统中,新建一个链接抽取,并打开脚本界面,新建一个脚本:



④写脚本如下:

var tstr = DOM.GetSource().ToStr();//打开请求中的dom树,并获取源码,定义源码为tstr
jScript js;//定义一个js
var obj = js.RunJson(tstr).data.list;//执行tstr代码并返回data后边的list后边的json串
for(var i=0;i<=19;i++){//用for循环查找每一个对象,i表示第几个对象
var obj_a=obj[i].title;//定义obj_a为第i个对象的title值
var obj_b=obj[i].url;//定义obj_a为第i个对象的url值
url u;//定义一个url
u.title=obj_a;//返回obj_a为url标题
u.urlname=obj_b;//返回obj_b为url链接
u.tmplid = 3;//关联模板3
RESULT.AddLink(u);//结束
}



⑤保存脚本后,采集预览查看是否抽取成功。



4.抽取新闻数据

①新建一个抽取模板,在其下新建一个数据抽取,具体操作如下所示:



②数据建表,按照下图所示建数据表。(注意字段属性等应严格按照下图进行设置)



③将新建好的数据表,关联到模板中去,如下图所示:



④填写示例数据,采集预览,复制任意一条新闻链接。



⑤将链接粘贴到本模板示例地址中,并双击内置浏览器空白部分,加载本链接。



⑥关联模板



⑦数据取值

使用定位取值的方法,title字段如下所示:



Text字段如下所示:



⑧采集预览



l 采集步骤

模板配置完成,采集预览没有问题后,可以进行数据采集。

①建立数据表单:

选择【数据建表】,点击【表单列表】中该模板的表单,在【关联数据表】中选择【创建】,表名称自定义,这里命名为【tengxun】(注意命名不能用数字和特殊符号),点击【确定】。创建完成,勾选数据表,并点击右上角保存按钮。



②开始采集

选择【数据采集】,勾选任务名称,点击【开始采集】,则正式开始采集。



③导出数据

采集结束后,可以在【数据浏览】中,选择数据表查看采集数据,并可以导出数据。




④导出的文件打开如下图所示:



l 前嗅简介

前嗅大数据,国内领先的研发型大数据专家,多年来致力于为大数据技术的研究与开发,自主研发了一整套从数据采集、分析、处理、管理到应用、营销的大数据产品。前嗅致力于打造国内第一家深度大数据平台!

(图片来源网络侵删)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 190277521@qq.com举报,一经查实,本站将立刻删除。 转载请注明出处:http://jjhmqgg.com/post/6303.html

分享:
扫描分享到社交APP
发表列表
请登录后评论...
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

x

注册

已经有帐号?