采集场景
在微博热搜榜(https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6)可实时查看微博热搜排名、热搜关键词和热搜数。点击每个热搜关键词可进入与其相关的微博列表页。我们需要采集以上数据。
采集字段
微博热搜排名、热搜关键词、热搜数、内容、发布时间、来源、收藏数、转发数、评论数、点赞数、采集时间和页面网址等字段。
采集结果
采集结果可导出为Excel、CSV、HTML、数据库等多种格式。导出为Excel示例:
教程说明
本篇制作时间:2024/01/15 八爪鱼版本:V8.6.7
如果因网页改版造成网址或步骤无效,无法收集到目标数据,请联系官方客服,我们将及时修正。
采集步骤
步骤一、打开网页,切换浏览模式登录,获取登录状态的cookie
步骤二、生成列表循环采集流程,并点击进入详情页
步骤三、创建【循环列表】,采集所有微博列表中的数据
步骤四、修改【循环】的XPath,以去掉多余列表
步骤五、修改字段的XPath,以精准采集所有字段
步骤六、规则优化
步骤七、启动采集
以下为具体步骤:
步骤一、打开网页,获取登录状态的cookie
1、获取登录状态的cookie
在首页输入微博热搜榜网址 https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6 ,点击【开始采集】,八爪鱼自动打开网页。
点击切换【浏览模式】,在浏览模式下点击页面上的登录按钮,跳到扫码登录窗口,使用手机app扫码登录,登录成功之后关闭【浏览模式】,在打开网页步骤的【高级设置】里面勾选【使用指定的cookie】,然后点击获取当前页面的cookie,点击应用。
步骤二、生成列表循环,并点击进入详情页
1、创建【循环列表】,采集热搜页面的列表数据
①、先选中页面上第一个列表的第一个单元格,再点击提示框右下角的【扩大选区】 按钮,选中至一整行。( 的作用是,扩大选中的范围。当前选中的是一个单元格,点一下, 选中的范围就扩大一个层级,即选中了一行)
②、在提示框中,选择【选中全部子元素】。第1个热搜中的具体字段就被选中了,这时八爪鱼又自动识别到页面中其他热搜列表具有相同的【子元素】。
③、在提示框中,选择【选中全部相似组】。可以看到页面中所有热搜列表中的子元素也都被选中了,被绿色框框起来。
④、在提示框中,选择【文本内容】。这时候,八爪鱼就将表格中的字段都提取下来了。
2、删除多余字段,修改字段名
这里的链接字段没有用,我们删除,然后修改剩下字段的字段名(双击字段名即可修改)
3、点击红框中的关键词,进入详情页(注意要在循环列表里面配置,这样才能循环进入每一个关键词的详情页面)
在循环的当前项(用红色框框起来)中找到关键词并选中,在弹出的操作提示框中,选择【点击该链接】。
可以看到流程中生成了1个【点击元素】步骤,八爪鱼自动跳转到了详情页,然后提取详情页数据即可。
步骤三、创建【循环列表】,采集所有列表数据
1、创建【循环列表】
通过以下连续3步,创建【循环列表】,采集所有微博列表中的数据
① 选中页面上1个微博列表,包含所有字段(微博这个网页比较特殊,无法直接选中整块微博列表,可以先选中较小的范围,然后在操作提示框中不断点击 按钮,直至选中的区域扩大至整块列表,示例中点击了2次 按钮)
② 继续选中页面上1个微博列表,包含所有字段(同①)
③ 点击【文本内容】
2、提取微博列表中的字段
在循环的当前项中(用蓝色框框起来),选中文本,在操作提示框中,选择【文本内容】。
文本类字段都可这样提取,示例中提取了 内容、发布时间、来源、收藏数、转发数、评论数、点赞数、等字段。
特别说明:
a. 经过以上连续3步,【循环-提取数据】创建完成。【循环】中的项,对应着页面上所有微博列表。但是这样会将整个列表作为一个字段提取下来,如果需要分开提取字段,请看下面的操作。
b. 为何通过以上3步,可建立【循环-提取数据】?详情点击查看 列表数据采集教程 。
c. 选中一个范围后,在操作提示框中,点击 按钮,可扩大一层选中的层级。可连续多次点击,每点一次,选中范围扩大一个层级。
d.请注意,一定要在循环的当前项中提取字段,才能与循环形成联动。否则,将重复采集某一条特定数据,无法与循环联动。
3、提取特殊字段,编辑字段
进入【提取列表数据】设置页面,可删除多余字段,修改字段名(双击字段名即可修改),移动字段顺序等。
在【当前数据页面预览】中,点击 ,可以添加提取采集时间和页面网址。
4、格式化数据
【转发数】和【收藏数】【评论数】这3个字段比较特殊,如当转发数为0 的时候,显示的是文字:”转发“,可以通过正则表达式,将其替换成数字0。
如果不介意重复,可跳过此步骤。
【转发数】格式化:点击字段后的 按钮,选择【格式化数据】→ 点击【添加步骤】→【替换】,将【转发】替换成【0】
【评论数】、【收藏数】格式化过程同上。
特别说明:
a. 什么是数据格式化?数据采集下来之后,有时候格式不是我们想要的,或者只想从一段数据里提取特定数据,可通过八爪鱼的【格式化数据】功能实现。详情点击查看 数据格式化教程 。
步骤四、修改循环XPath,以去掉多余列表
默认生成的【循环】,会将右侧的【话题贡献排行榜】、【关于】、【热搜榜】和【搜索历史】也定位到,需手动修改XPath将其去掉。
进入【循环列表】设置页面,修改XPath为://DIV[@class='card-wrap'][@mid] ,然后保存。
特别说明:
a. 如何写精准定位到目标微博列表的XPath?这需要一定的XPath知识。点击查看 XPath学习与实例教程 。
步骤五、修改字段的XPath
自动生成的字段的XPath,无法精准定位到所有微博中的字段,会漏数据。我们需手动修改字段的定位XPath。
以【内容】为例。在【转发】字段后选择【修改元素定位】,修改XPath为: //div[@class="card-act"]//ul/li[1]/a[1],然后保存。
其他字段的XPath修改方法同上,各XPath为:
【内容】://p[@node-type="feed_list_content"]
【发布时间】://div[@class="content"]/div[@class="from"]/a[1]
【来源】://div[@class="content"]/div[@class="from"]/a[2]
【收藏数】://div[@class="card"]//ul/li/a[contains(text(),'收藏')]
【转发数】://div[@class="card-act"]//ul/li[1]/a[1]
【评论数】://div[@class="card-act"]//ul/li[2]/a[1]
【点赞数】://div[@class="card-act"]//ul/li[3]/a[1]
特别说明:
a. 为什么默认的XPath,无法精准定位到所有微博中的字段?这是因为,微博列表分为热门博文和非非热门博文2种,我们在热门博文中做的字段提取,不适用非热门博文。我们需要写一条XPath,使之在热门博文和非热门博文中,都能提取到目标字段。
b. 如何写精准定位到所有字段的XPath?这需要一定的XPath知识。点击查看 XPath学习与实例教程 。
步骤六、优化规则
为【循环列表】、【点击元素】、【提取列表数据】等步骤设置执行前等待1s-3s,然后点击【应用】保存。
步骤七、启动采集
1、单击【采集】并【启动本地采集】。启动后八爪鱼开始自动采集数据。
特别说明:
a. 【本地采集】是使用自己的电脑进行采集,【云采集】是使用八爪鱼提供的云服务器采集,点击查看 本地采集与云采集详解。
2、采集完成后,选择合适的导出方式导出数据。支持导出为Excel、CSV、HTML、数据库等。这里导出为Excel。
数据示例:
拓展阅读
1、在未登录情况下,只可采集第一页微博列表数据,这是网站本身的限制。
2、如果需要采集更多页的微博,请登录后再采集。 如何登录?点击查看 处理需要登录的网页(含登录时有验证码)
3、第一页会显示当前时间下的最新博文。可通过八爪鱼云采集,定时采集(最小的定时间隔为1分钟)最新的热搜词及其相关博文。点击查看 云采集使用方法(含定时云采集)
作者:妙卡
编辑:妙卡