前嗅网络发表于2023年13月13日15:22最后回复于2023年13月13日15:22

【从零开始学爬虫】采集丁香医生新冠问答数据

249浏览量

0评论

图片

|采集简介

【场景描述】采集丁香医生网中新冠问题下的最新医患问答数据。

【源网站介绍】丁香医生网提供问医生、查疾病、查药品、查疫苗、查检查、科普视频等信息。

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

图片

ForeSpider爬虫软件    


|采集网站

【入口网址】

https://dxy.com/search/questions/%E6%96%B0%E5%86%A0?page_index=1

【采集内容】

采集新冠问题的用户提问、医生回答、医生姓名、科室、医生所属医院新基本数据

 图片

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

图片

 

|思路分析

配置思路概览:

图片

 

|配置步骤

1.新建采集任务

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

 图片


选择【抽取链接】的所有链接,勾选【翻页链接】,然后点击【完成】。

图片

 

2.抽取翻页链接

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

https://dxy.com/search/questions/%E6%96%B0%E5%86%A0?page_index=页数

图片

 

②在【模板抽取配置】选择频道(即任务名称),选择【脚本窗口】,将页数搜索配置在频道处即可。

图片

 

具体配置脚本如下:

图片

 

效果预览:

点击【保存】,点击【采集预览】,即可看到配置效果。

图片

 

3.链接抽取

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

①在原有模板基础上,点击按钮如下,添加列表链接抽取

图片

 

采用地址过滤的方法来抽取表一链接,具体如下所示:

点击采集预览,先观察标题链接规律,找到规律,很明显标题链接中都包含:https://dxy.com/question/规律的数字

图片

 

然后设置地址过滤,过滤包含https://dxy.com/question/”的链接,这样就把列表链接过滤出来了。

图片

 

③关联模板,点击【列表链接抽取,关联模板03。

图片

 

4. 数据抽取

①链接抽取完成进入数据页,在原有模板基础上添加数据抽取,点击【+】后新建模板03,然后点击【添加数据抽取】按钮

图片

 

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

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

图片

 

b.另外需要注意,每一个表单都需要配置主键字段,需要使用脚本的字段,在高级类型中选择脚本取值才可进行脚本操作

图片


c.其它字段根据实际需求配置即可,例如:questions字段配置如下

图片

 

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

图片

 

④填写示例地址

采集预览,复制任意一条列表链接。

图片

 

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

图片

 

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

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

图片

 

doctorname字段医生姓名字段,采集内容选择【选区内可见文本】-【选区内可见文本】,选择doctorname按住“ctrl+鼠标左键”选择所需区域,之后点击【确认选区】。

图片

 

hospitalname字段所属医院字段,采集内容选择【选区内可见文本】-【选区内可见文本】,选择hostpitalname按住“ctrl+鼠标左键”选择所需区域,之后点击【确认选区】。

图片

 

department字段科室字段,采集内容选择【选区内可见文本】-【选区内可见文本】,选择department按住“ctrl+鼠标左键”选择所需区域,之后点击【确认选区】。

图片

 

question字段问题字段是用脚本处理的。

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

通过查看网页结构,发现所需要的链接全部包含在class”类中。每个链接块对应dialog”类,我们所需要的内容包含在“class”类的下一个结点dialog theme-dark”中GetTextAll获取文本的结点

图片

图片

 

answer字段:回答字段是用脚本处理的。

使用F1查看网页,发现所需要的链接全部包含在class”类中。每个链接块对应dialog”类,我们所需要的内容包含在“class”类的“dialog theme-white下一个结点中GetTextAll获取文本的结点

图片

图片

 

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

图片

 

|采集步骤

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

1.首先要建立采集数据表:

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

图片

 

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

图片

图片

 

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

图片

 

4.导出数据

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

图片

 

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

图片


私信

举报