百度知道问答采集
2018-01-29 17:44:13 阅读量: 17557
百度知道是用户自己根据具有针对性地提出问题,通过积分奖励机制发动其他用户,来解决该问题的搜索模式。同时,这些问题的答案又会进一步作为搜索结果,提供给其他有类似疑问的用户,达到分享知识的效果。
本文使用了文本循环方法,实现一次采集多个关键词的百度知道搜索结果。采集的字段为:问题、问题内容、提问者、问题浏览量和最佳答案。大家在实际操作过程中,可根据自身需求,更改字段内容。百度知道采集过程中需注意以下几点:1、每个关键词搜索出来的有广告,与正式问答的网页结构不同。2、每个回答的网页结构也不是全然一样的,需根据具体网页进行判断。以下是一个完整的采集过程。
采集网站:https://zhidao.baidu.com/
使用功能点:
l 分类列表信息采集
/tutorialdetail-1/fylb-70.html
l AJAX点击和翻页
/tutorialdetail-1/ajaxdjfy_7.html
l 文本循环
/tutorialdetail-1/wbxh_7.html
步骤1:创建采集任务
1)进入主界面,选择“自定义模式”
2)将要采集的网址复制粘贴到网站输入框中,点击“保存网址”
步骤2:输入文本
1)在页面右上角,打开“流程”,以展现出“流程设计器”和“定制当前操作”两个板块。选中“循环按钮”不放,将其拖动到流程中
2)选中循环步骤,在高级选项中,勾选循环方式为“文本列表”,并在文本列表框中,输入要搜索的关键词。输入完成后,点击“确定”
3)点击搜索框,在操作提示框中,选择“输入文字”
4)在此处不输入文本,直接点击“确定”
5)将“输入文字”步骤,拖入到流程中
6)勾选“使用当前循环里的文本来填充输入框”,最后点击“确定”
7)我们手动执行一下规则。选择一个关键词“八爪鱼”,再点击“输入文字”步骤
可以看到,“八爪鱼”自动填充到了搜索框中
8)点击“搜索答案”按钮,在弹出的操作提示框中,选择“点击该按钮”
步骤3:创建翻页循环
1)将页面下拉到底部,点击“下一页”按钮,在右侧的操作提示框中,选择“循环点击下一页”,以建立一个翻页循环
步骤4:创建列表循环并提取数据
1)移动鼠标,选中页面里第一条链接(注意:搜索结果页面可能会出现广告,我们在此将其排除,请注意选中的需是正常问答的链接),系统会自动识别同类链接。在弹出的操作提示框中,选择“选中全部”
2)选择“循环点击每个链接”
3)系统会自动点击进入链接详情页,选中标题,在弹出的操作提示框中,选择“采集该元素的文本”
4)字段选择完成后,选中相应的字段,可以进行字段的自定义命名
注意:为了让大家看到文本循环的效果,在开始启动采集前,这里设置了循环翻页的次数为1。大家在实际操作过程中,可以按照自己的需要设置翻页次数
5)完成后,点击左上角的“保存并启动”,选择“启动本地采集”
步骤5:修改Xpath
启动一次采集后,我们发现,问题内容、提问者和最佳答案这三个字段,在多个数据行中,出现缺失。观察网页发现,问题内容字段属正常现象,因为有的网页有问题内容,有的网页没有。提问者和最佳答案字段,则是由于Xpath定位不准导致的
1)首先来看提问者这一字段。网页的提问者有两种情况,一种显示提问者ID,一种显示匿名,系统自动生成的xpath只能定位到其中一种。我们需要一条,能将匿名和提问者ID都定位到的xpath
选中提问者字段,点击图中的按钮
选择“自定义定位元素方式”
将元素匹配的xpath 修改为
.//*[@id='ask-info']/a|.//*[@id='ask-info']/span[2],完成后点击“确定”
3)然后来看最佳答案这一字段。系统自动生成的xpath,只能定位到当前页的最佳答案,不能定位到所有页的最佳答案
观察网页源码发现,所有页的最佳答案字段,具有相同的class属性
因而我们用class属性来写一条xpath:.//*[@class='best-text mb-10']。经验证,此条xpath:.//*[@class='best-text mb-10'],的确可以正确定位到每页的最佳答案字段。
按照刚才的操作,选中提问者字段,点击图中的按钮
选择“自定义定位元素方式”,将修改后的xpath:.//*[@class='best-text mb-10'],复制到八爪鱼中的相应位置
步骤6:数据采集及导出
1)再次启动采集,采集完成后,会跳出提示,选择“导出数据”。选择“合适的导出方式”,将采集好的数据导出。这里我们选择excel作为导出为格式,数据导出后如下图,可以看到,采集的数据中,是八爪鱼、大数据、数据采集、爬虫软件4大关键词的问答结果