网页如下:
https://www.tripadvisor.cn/Attra ... es_Cote_d_Azur.html

需求:
想根据 游客类型、时间、语言 三个连续动作 采集 各种满意度(非常好、较好、一般、较差、很差)下的点评数量




已建立两个规则:
规则1的主题名是:尼斯城堡山点评1
规则2的主题名是:尼斯城堡点评2

遇到的问题:
在连续点击动作(应该)正常完成的情况下,无法实现有效取数,所有的取数都是一个结果

我是参考下面这个帖子做的:
http://www.gooseeker.com/doc/article-449-1.html


不知道为什么出错,请求大神相助!



尼斯城堡点评.jpg (152.43 KB, 下载次数: 829)

尼斯城堡点评.jpg
举报 使用道具
| 回复

共 15 个关于本帖的回复 最后回复于 2019-4-4 14:33

沙发
Fuller 管理员 发表于 2019-2-27 17:11:57 | 只看该作者
首先关于集搜客浏览器的一个问题要避免一下:输入你给的网址以后,在集搜客浏览器上会发生跳转,能看到浏览器的网址变化了,这个网址在后面执行DS打数机的时候是无效的。所以,做完规则以后,第一个网址就是样本页面的网址,抓取是失败的。但是,通过DS打数机或者会员中心加入的网址是正确的。



用上面说的方法避免网址问题。我们的研发检查一下原因
举报 使用道具
板凳
Fuller 管理员 发表于 2019-2-27 17:15:10 | 只看该作者
你的规则问题在于:

不要点击INPUT,而是点击INPUT下边的LABEL元素


另外,我把三个xpath修改了,可以更加精准一些
  1. 第一个点击
  2. //*[@class='row_label label' and preceding-sibling::input[1]/@class='filters_detail_checkbox_filterSegment_cbx']
  3. 第二个点击
  4. //*[@class='row_label label' and preceding-sibling::input[1]/@class='filters_detail_checkbox_filterSeasons_cbx']
  5. 第三个点击
  6. //*[@class='prw_rup prw_filters_detail_language ui_column separated is-3']//label[@class='label' and contains(preceding-sibling::input[1]/@id, 'filters_detail_language_filterLang')]
复制代码


我测试了没有问题
举报 使用道具
地板
Fuller 管理员 发表于 2019-2-27 17:16:00 | 只看该作者
补充一下,我把每个动作的高级设置里面的额外延迟填上了3秒,因为每点击一次要给网页加载时间
举报 使用道具
5#
Fuller 管理员 发表于 2019-2-27 17:19:17 | 只看该作者
另外,不要给第一步和第二步勾必做,不然的话,执行完一轮,进入第二轮的时候,再次点击就会让checkbox从勾选变成了不勾选的状态了,所以,不要勾必做,就保持在勾选状态
举报 使用道具
6#
Fuller 管理员 发表于 2019-2-28 12:27:42 | 只看该作者
这个网站好怪,昨天还会自动跳转到一个特别的网址,今天就不跳了,本来想测试一下怎样禁止它跳转
举报 使用道具
7#
loserxx 中级会员 发表于 2019-2-28 15:47:34 | 只看该作者
Fuller 发表于 2019-2-28 12:27
这个网站好怪,昨天还会自动跳转到一个特别的网址,今天就不跳了,本来想测试一下怎样禁止它跳转 ...

是啊,我也觉得奇怪,这里有几个问题:
1、不理解您所说的要在DS打数机或者会员中心输入网址是什么意思,因为我没找到在哪能输网址。不过这个问题现在似乎不重要了?

2、程序语句的定位标号经常不一样,比如您图例当中的4101行及其Xpath,我这边就始终搞不出来,我这里4101行不是这个label,label的xpath也不是你给我的那个样子,这是怎么回事?

3、如果我用label的话,dom搜索出来数字太多,有几十个dom,这个感觉也不大对,dom不是应该和关键字的条数(比如游客类型是5类)一致吗?

4、我按您昨天说的,直接把3个Xpath 复制黏贴到新的规则1里,但是取数还是不对,还是只有一个结果,用爬虫爬的时候,可以看到连续动作的节点在变化,但评分那边的结果纹丝不动,不知道是不是规则2也要修改一下呢(我没有修改过规则2)?


4、我新用了两个规则名:法国尼斯城堡山点评1、法国尼斯城堡山点评2,您再看看?

以上问题求教,万分感谢!
举报 使用道具
8#
Fuller 管理员 发表于 2019-2-28 16:31:02 | 只看该作者
loserxx 发表于 2019-2-28 15:47
是啊,我也觉得奇怪,这里有几个问题:
1、不理解您所说的要在DS打数机或者会员中心输入网址是什么意思, ...

问题1的解答:
添加网址的方法看这个文档《如何管理规则的线索》,介绍了从DS打数机和会员中心添加线索的方法

问题2的解答:
不要太关注节点编号,每次加载网页后得到的节点编号都会不一样,爬虫的规则不会用这个编号的,编号的目的是为了方便在DOM树上找某个节点

问题3的解答:
XPath要写的最够精确,把上级或者兄弟节点考虑进去,比如
  1. //*[@class='row_label label' and preceding-sibling::input[1]/@class='filters_detail_checkbox_filterSegment_cbx']
复制代码
本来是为了定位
  1. //*[@class='row_label label']
复制代码
但是这样定位到的label太多了,所以加了一个and条件,意思就是说这个label的前一个兄弟是input节点,而且含有class='filters_detail_checkbox_filterSegment_cbx'  ,这样就很准确了。到底应该搜到几个节点,不是跟条数有关,比如第一步点击

应该搜到5个
举报 使用道具
9#
Fuller 管理员 发表于 2019-2-28 16:38:28 | 只看该作者
loserxx 发表于 2019-2-28 15:47
是啊,我也觉得奇怪,这里有几个问题:
1、不理解您所说的要在DS打数机或者会员中心输入网址是什么意思, ...

我运行了你的规则,结果是变化的,能采集到数据。

同时还发现一个问题,

如果点击的语言是更多语言里面的,就失效了。为了解决这个问题,在点击语言之前增加一步,先点击“更多语言”,这一步应该勾上必做,每次都点。然后在点击语言,这样的话,语言是在一个弹出框中列出来的,xpath跟原来不一样,要改
举报 使用道具
10#
loserxx 中级会员 发表于 2019-2-28 17:12:41 | 只看该作者
Fuller 发表于 2019-2-28 16:38
我运行了你的规则,结果是变化的,能采集到数据。

同时还发现一个问题,

嗯嗯,明白不不少了,谢谢!

另外,规则2 需要改吗? 规则2 我是用的id而不是class,所以心里有点不踏实
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

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

热门用户

GMT+8, 2024-4-25 09:26