写点什么

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

作者:前嗅大数据
  • 2023-01-13
    天津
  • 本文字数:1892 字

    阅读完需:约 6 分钟

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


|采集简介

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

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

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

http://www.forenose.com/view/forespider/view/download.html

|采集网站

【入口网址】

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.导出的文件打开如下图所示:


发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2020-11-06 加入

前嗅大数据,企业级大数据供应商。www.forenose.com

评论

发布
暂无评论
【从零开始学爬虫】采集丁香医生新冠问答数据_数据采集_前嗅大数据_InfoQ写作社区