15 19895

关于微博展开全文

Ursula 于 2017-4-30 21:48 发表 [复制链接]
利用论坛里的帖子和教程做了下博主主页的爬取,但是展开全文这里还是没有搞定。主要有两个问题,第一个是设置了连续动作的Xpath后,在爬取数据的时候并不能点开,但是Xpath设置时搜索的时候结果数量是正确的;
第二个是在点击展开全文后,微博正文有两个内容,一个是展开前的,一个是展开后的,所以我就遵照有篇帖子里的办法用了自定义Xpath,爬取这两个内容,可是后来测试的时候发现,前一个内容一直都在爬取第一篇微博的内容,而后一个内容一直都是第一篇有展开全文的展开后的内容,后来我把Xpath最后的[1]去掉了,前一个内容就正常了,但是因为第一个问题的存在,所以展开全文后的内容一直没有。
希望有大神帮忙解决一下,谢谢!!!!
一级规则——微博展开全文
二级规则——微博爬取博文

QQ截图20170430214328.png
举报 使用道具
| 回复

共 15 个关于本帖的回复 最后回复于 2021-11-26 15:36

wangyong 版主 发表于 2020-12-15 16:39:17 | 显示全部楼层
本帖最后由 wangyong 于 2020-12-15 16:40 编辑

集搜客的快捷采集中有微博展开全文采集入口,添加需要展开全文的微博独立链接就可以进行采集。 微博展开快捷采集.png
数据展示:
微博展开快捷采集.png
举报 使用道具
Fuller 管理员 发表于 2017-5-1 00:51:09 | 显示全部楼层
你的这个规则我还需要仔细分析一下,但是有一个问题是很明显的,就是第二级规则的抓取内容问题。

在第一级做了一次点击动作以后,转到第二级主题,但是爬虫其实不去分辨具体点击了哪个位置,即便在第一级爬虫能准确点击要点的位置。所以,你不能期望爬虫在第二级刚好只采集那个刚刚点过的位置。在第二级还是要做一个样例复制,把完整的微博列表采集下来。
举报 使用道具
Ursula 初级会员 发表于 2017-5-1 10:38:49 | 显示全部楼层
Fuller 发表于 2017-5-1 00:51
你的这个规则我还需要仔细分析一下,但是有一个问题是很明显的,就是第二级规则的抓取内容问题。

在第一级 ...

列表我用了定位映射,不可以吗?
举报 使用道具
Fuller 管理员 发表于 2017-5-1 10:55:31 | 显示全部楼层
Ursula 发表于 2017-5-1 10:38
列表我用了定位映射,不可以吗?

因为有相同定位标志的博文,这样只能抓取到相同标志的第一个博文。

除非写自定义xpath,选择一个独一无二的标志,写到这个xpath中,把这个xpath用于一个抓取内容。这个抓取内容实质上不是为了抓内容的,而是为了从微博列表中把微博定位出来的
举报 使用道具
Ursula 初级会员 发表于 2017-5-1 13:26:09 | 显示全部楼层
Fuller 发表于 2017-5-1 10:55
因为有相同定位标志的博文,这样只能抓取到相同标志的第一个博文。

除非写自定义xpath,选择一个独一无 ...

嗯嗯,那这个点击展开全文连续动作不起作用是什么原因啊?
举报 使用道具
Ursula 初级会员 发表于 2017-5-1 13:46:54 | 显示全部楼层
Fuller 发表于 2017-5-1 10:55
因为有相同定位标志的博文,这样只能抓取到相同标志的第一个博文。

除非写自定义xpath,选择一个独一无 ...

你好,我用了样例复制,可是测试的时候还是一直爬下来的是第一个微博文本,只有把微博内容的自定义Xpath中的自定义去掉或者去掉后面的[1]好像才会爬下来所有列表里的每一条微博。
举报 使用道具
Fuller 管理员 发表于 2017-5-2 09:17:28 | 显示全部楼层
Ursula 发表于 2017-5-1 13:46
你好,我用了样例复制,可是测试的时候还是一直爬下来的是第一个微博文本,只有把微博内容的自定义Xpath ...

点击展开全文的时候,在DOM中会插入一个DIV,紧跟着原来的DIV,结构几乎一样,但是有个特别的标志node-type,用这个xpath就能定位到
  1. //*[@node-type='feed_list_content_full']
复制代码
展开全文后.png


这里利用这个标志做精确定位,在第二级整理箱中多创建一个抓取内容,把node-type做内容映射映射给他
如果不用这个特殊内容,那么每次加载规则的时候,都会定位到第一个博文


举报 使用道具
Fuller 管理员 发表于 2017-5-2 09:28:34 | 显示全部楼层
至于为什么总是抓取第一条,是因为你用的自定义xpath不正确,比如
  1. //*[@class='WB_text W_f14'][1]
复制代码

会比较严重干扰自动生成的规则。本来要求自定义xpath的定位起点应该相对于一个区域块节点,这个区域块节点就是一条微博的div,而你用的//是从整个html开始匹配的,而且在整个html中找到一个集合,然后只选择第一个。这样的规则只能采集第一条
把自定义xpath改掉吧。先不用自定义xpath,用内容映射,等自动生成了规则,再把它的定位表达式拷贝出来进行编辑,定位起点一般是 ./ 开始,就是相对于它的容器节点开始。自动生成的xpath可能开头是*//*这种,可以替换成 .//*



举报 使用道具
Ursula 初级会员 发表于 2017-5-2 10:26:43 | 显示全部楼层
Fuller 发表于 2017-5-2 09:17
点击展开全文的时候,在DOM中会插入一个DIV,紧跟着原来的DIV,结构几乎一样,但是有个特别的标志node-typ ...

谢谢!第二个问题解决了,但是第一个那个节点标志,这个特殊的表示应该是展开全文后才会有吧?可是运行规则的时候展开全文还没有点开那应该是找不到的吧,主要是我试了一下好像还是点不开啊
举报 使用道具
Fuller 管理员 发表于 2017-5-2 10:35:03 | 显示全部楼层
Ursula 发表于 2017-5-2 10:26
谢谢!第二个问题解决了,但是第一个那个节点标志,这个特殊的表示应该是展开全文后才会有吧?可是运行规 ...

你一开始那个点击定位xpath是对的,现在变成
  1. //*[@class='WB_text_opt']/@action-type
复制代码


不能定位到一个属性,而是应该是一个html元素,才能接受点击

举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • Gephi社会网络分析-马蜂窝游记文本分词并同
  • Gephi社会网络分析-基于马蜂窝游记文本以词
  • 知乎话题文本根据词语间距筛选后生成共词矩
  • 马蜂窝游记文本分词后以词语间距为筛选条件
  • 学习使用apriori算法挖掘关联关系

热门用户

GMT+8, 2024-3-29 19:56