爬虫教程:如何批量采集知乎

news/2024/7/19 12:36:35 标签: 大数据, 爬虫, 数据挖掘

 采集网站

【场景描述】通过搜狗搜索的知乎搜索栏目,按关键词搜索采集知乎正文

【入口网址】https://zhihu.sogou.com

 

 

【采集内容】

本次采集的数据为知乎文章的标题和内容

思路分析

功能点总结:关键词配置链接、翻页、链接抽取、数据抽取

配置思路配置思路

配置步骤

1. 新建采集任务

选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可。由于本次采集是通过关键词采集相关内容,所以【采集类型】要勾选【关键词采集】,填写完成。

点击【完成】,任务列表里出现本条任务,即为创建成功。

2. 关键词配置

①在入口页搜索不同关键词,发现不同关键词搜索结果的链接,只更换了图中红框部分,而红框部分正是经过转码后的关键词,于是得出关键词链接的拼接规则为:

https://www.sogou.com/sogou?query=关键词

ie=utf8&pid=sogou-wsse-ff111e4a5406ed40&insite=zhihu.com

②得到关键词链接拼接规则后,开始配置关键词搜索:

点击屏幕右下角【高级配置】,将采集地址填写到【请求地址】中,点击【+】添加一个参数,名称可以自定义,此项配置是用于后期脚本能将关键词从关键词列表中取出,配置完成点击【确定】即可。

③由于本模板是以关键词搜索为入口,所以在【模板抽取配置】选择频道(即任务名称),选择【脚本窗口】,将关键词搜索配置在频道处即可。

④具体配置脚本如下:

⑤效果预览:

在【关键词列表】中填写关键词,点击【保存】,点击【采集预览】,即可看到配置效果。

3. 翻页配置

关键词配置完成,下一步是获取关键词搜索结果中的全部翻页链接。

①右键点击【默认模板:01】,选择添加链接抽取。

②同样选择【脚本窗口】,配置翻页脚本。

③对关键词搜索出的网页翻页,观察网页地址的变化,发现在原地址中增加了“&sut=2674&sst0=1617764379159&lkt=1%2C1617764379044%2C1617764379044&page=2&ie=utf8”部分,随着页码的改变,仅有page参数的值在变化。page为页码的配置参数,其它不变部分,直接拼接在链接中即可。

④具体配置脚本如下:

⑤效果预览:

4. 链接抽取

这一步是在获取的翻页链接中,提取每页全部知乎问题链接:

①在原有模板基础上,右键选择【添加模板】

 

②右键新添加的模板,选择【添加链接抽取】

③以第一页为例,查看网页结构(可以使用F12查看,但需确认源码与F12内容一致)。

通过查看网页结构,发现所需要的链接全部包含在“results”类中。每个链接块对应一个“vrwrap”类,我们所需要的内容,全部包含在“vrwrap”类的h3结点“vrTitle”中,“vrTitle”的子结点a标签内为该条内容的链接地址和标题内容。

④同样选择当前链接抽取,在【脚本窗口】中编写脚本,具体脚本内容如下:

⑤效果预览:

5. 数据抽取

①链接抽取完成进入数据页,在原有模板基础上,右键选择【添加模板】,新添加的模板,右键【添加数据抽取】。

②此时要完成数据建表的工作:

a.选择【数据建表】,点击【采集数据表结构】中的【+】,即可添加数据表,名称可以自定义。

b.选中数据表,在数据表结构中点击【+】,添加字段。如图所示,我们需要的字段均以添加到数据表中,额外添加了网页地址、获取时间、任务名称等是为了后期查找内容更方便。另外需要注意,每一个表单都需要配置主键字段,需要使用脚本的字段,在高级类型中选择脚本取值才可进行脚本操作,其它字段根据实际需求配置即可。

③数据表配置完成,选择【数据抽取】右侧数据属性配置,表单选择刚建立的“知乎”数据表,则可看到表单中的字段在右侧显示。

④需要配置哪一个字段,点击该字段,在右侧字段属性中配置即可,选择脚本配置的字段,在脚本窗口中进行代码配置。

id字段:主键字段,采集内容选择【主键】-【网页主键】,主键为当前网页的MD5值。

title字段:网页标题字段,采集内容选择【网页信息】-【网页标题】

content字段:正文字段,采集内容选择【选区内可见文本】-【文章正文内容】

keywords字段:关键词字段,该字段是用脚本处理的,由于关键词字段仅是频道脚本中的局部变量,且后期页面均没有出现,所以需要将关键词字段赋值在全局变量中,才能在数据抽取时将关键词字段提取出来,此处将其赋值与全局变量title。

同理,数据表中需要采集当前数据在第几页出现,而页面数据同样为翻页模板中的局部变量,后面模板无法提取,所以需要将当前翻页脚本中的页数记录在全局变量中,同样将页数记录在title中以“#”与关键词分隔。

当前数据出现在某页第几行,页码已经记录在全局变量title中,链接抽取中当前链接行数也是唯一出现的局部变量,同样需要记录才能传值,于是将行数也赋值在title中以“*”与页码分隔。

所以最终记录在title中的值包含以下部分:

对于keywords字段来说,取出全局变量title中“#”左边部分即可。

page字段:页码,同keywords字段,取全局变量title中“#”和“*”中间部分。

raw字段:行数,同keywords字段,取全局变量title中“*”右侧部分。

gettime字段:网页采集时间,采集内容选择【时间信息】-【网页获取时间】

url字段:网页地址,采集内容选择【网页信息】-【网页地址】

web字段:网站名,脚本返回“知乎”。

author字段:可以采用可视化配置,【采集内容】选择【选区内可见文本】-【选区内全部文本】,【定位类型】选择【标准定位】,Ctrl+鼠标左键选中选区,点击下方【字段定位取值】,然后确认选区,字段配置完成。

temp_name字段:模板名称,采集内容选择【采集任务信息】-【任务名称】

⑤以上完成全部字段配置,效果预览如下:

采集步骤

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

①首先要建立采集数据表:

选择【数据建表】,点击【表单列表】中该模板的表单,在【关联数据表】中选择【创建】,表名称自定义,这里命名为zhihu(注意命名不能用数字和特殊符号),点击【确定】。

创建完成,勾选数据表。

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

③可以在【数据浏览】中,选择数据表查看采集数据。

课后回顾

GetSearch():返回关键词列表中的关键词。

Search()反复调用来遍历关键词列表。

FindClass(class名,标签类型,开始查找结点):当符合条件的class名称唯一时,使用class名来查找结点。

FindName(标签名,开始查找结点)当查找范围内,符合条件的数据标签唯一时,可以使用标签名称查找标签结点。

GetTextAll(需要获取文本的结点,使用的字符编码)获取该html标签节点及所有子节点的可见文本。


http://www.niftyadmin.cn/n/1191434.html

相关文章

java_2变量和运算符

1.变量 存储数据的容器。 2.变量创建的3要素 数据类型 变量名 变量值; 如int a 10; 3.数据类型的自动转化 当小范围变量向大范围变量转化的时候,会发生这种情况。如int类型变量转化为double类型的变量。 4.数据类型的强制转化 大范围的数据类型向小范…

有容云:上车 | 听老司机谈Docker安全合规建设

编者注: 本文根据7月19日DockOne社群分享内容整理而成,分享嘉宾蒋运龙,有容云高级咨询顾问,一个IT的老兵,十年来混迹于存储、三网融合、多屏互动、智能穿戴、第三方支付、Docker等行业;经历过测试、运维、实…

爬虫实战教程:采集微信公众号文章

一.场景简介 1.场景描述:通过搜狗采集微信公众号的文章 2.入口网址:https://weixin.sogou.com/weixin?type1&s_frominput&query%E5%89%8D%E5%97%85&ieutf8&sugn&sug_type 3.采集内容: 采集搜狗微信平台中&#xff0…

供应链爆料:华为P30备货量超恐怖,“耍猴”已经行不通!

开篇前先聊两件事:去年被冠以“真香机”的魅族16,因为前期备货严重不足上市三个月后才实现现货,赢了口碑输了销量;上个月发布的小米9,同样面临缺货的窘境,“耍猴”之声不绝于耳剧情介绍。 带大家回顾这两件事不为别的&…

研究生们典型的一天,躺着也中枪

(本文转自硕士博士俱乐部,其微信号:shuobo100,号称中国最活跃研究生信息交流分享平台) 各学科硕士/博士生们典型的一天,看看大家都是怎么度过的,躺枪的请举手,没有中招的也请留个爪,一起来完善这个《典型的…

从零学爬虫:采集房天下二手房信息

l 采集网站 【场景描述】采集房天下最新二手房信息。 【入口网址】https://tj.esf.fang.com/ 【采集内容】 采集天津市房天下,二手房模块中的所有二手房的标题、价格、户型、面积、单价、朝向、楼层、装修、小区、区域、联系人、电话。 l 思路分析 配置思路概览…

【从零开始学爬虫】采集全国航班信息

l 采集网站 【场景描述】采集全国航班信息。 【入口网址】http://www.esk365.com/tools/gnhb/ 【采集内容】采集全国航班的航班号,起点、终点。 l 思路分析 配置思路概览: l 配置步骤 一.新建采集任务 选择【采集配置】,点击任务列表右上…

【Coursera】Internet History 小结

前言 终于看完了接近一半课程的 History 的内容。 在这两周的时间里面,了解了互联网的起源,发展,以及现在互联网的情况。听了许多故事,有让人会心一笑的,也有令人感慨万千的。见到了许多令人景仰的科学家,游…