2018-09-21记录一下跑澳门消费论文数据的14个小时

记在卷首:

任何操作,在你上手之前,你永远不知道这次会发生什么样的问题,以及你永远都不会发现自己多么有解决问题的创造力。

                                                                                                        ——吉吉

没想到这次的主要问题是携程带来的:

1、抓出来的携程店铺对应的URL连接出错

情况说明:

一开始就很奇怪,不知道为什么后羿采集器始终无法抓那个店铺连接的列表。然后换了个什么爬山虎采集器,才把店铺连接都给抓到。不知道携程是不是用了某种反爬设计,不过有些收费的采集器都还是比较强大的可以解决这个问题。

但是,不知道为什么,采集出来的店铺列表的URL突然错了,一个澳门的店铺,URL可以对应到什么广州深圳北京南京。但奇怪的是,URL的内容是带有macau字样的,不一样的是后面的id数字。那么按理说,这种url应该对应到一个澳门的店铺,或者说店铺、网址不存在的页面上,而不是随便定义到全世界任意一个店铺上,所以这个URL设计的很奇怪,所以要不是设计者脑袋抽风,就是故意用来反爬虫的措施。而这一招很鸡贼,因为大家一般都是爬到就好了,或者随便点开几个检查看看,而不会都检查。若不是因为这次我要打tag所以要一个个点URL进去看下每个店都是干什么的,可能就不会发现这个问题,进而爬出的后一半的评论便都是错的了。

总结经验:

(1)爬出URL还是要点进去抽样检查下是不是对的。我觉得这样设计URL来反爬虫站在人类的发展的角度上来说是很缺德的了,因为它会影响到多少研究结果啊。。。

2、镜像网页识别出来的是两个完全不同的列表。并且只要编辑脚本便自动重新识别列表,控制不住。

情况说明:

在我爬取评论的时候,已经构建好了大概的采集框架,但是突然想加一个脚本进去。于是点击进脚本界面,修改脚本,再返回抓取界面的时候,发现采集器系统自动智能识别了,我之前列的采集框架没有了。且“按照热度排序”和“按照时间顺序排序”,两个网页的架构是大致一样的,但诡异的是在按时间顺序排序中我无法利用点击选择的方式识别之前识别的列表。

解决方案:

(1)采集器应该加个连接爬取界面的控制装备,即客户可以锁定爬取的Xpath。这个我在(2)(3)条会提到。

(2)关于网页一样,但识别出来的Xpath不一样的处理:

因为两个网页架构应该一样,所以可以手动设置Xpath。把镜像A(即有想要的那个Xpath的那个界面)的Xpath文本复制到镜像B(即无法自动取到想要的Xpath的那个界面)。

(3)关于爬虫连接和脚本命令相互影响的冲突的处理:

一般都是因为脚本命令改变→爬虫界面改变→爬虫Xpath自动重新设置(再次希望推出可以锁定Xpath,让它不要因为爬虫界面改变就自动重设的功能...)

所以解决方案也相应显现:在操作的时候,尽可能先设置脚本命令→再设置想要的Xpath。这样就不会因为脚本的变化而导致Xpath全付之一炬。

但是这种解决方案还是非常!不!人性化!因为正常人在编写采集方案的时候都无法保证自己能想到所有脚本!很有可能是在做着做着突然想到:诶,这儿再设置一个脚本会不会对输出和研究更有帮助?(比如我今天就是做着做着突然想到:如果用脚本把抓取结果按照时间顺序排列,会不会分析的时候就可以再把时间拿来比较一下?)那么这时候。。。总不能说:要么贯彻自己的想法,然后把之前堆好的采集方案牺牲掉;要么不贯彻这个想法,看看有没有别的方法来解决(比如我上述的那个问题:也可以通过关键词搜索“2018”、“2017”把数据归类来解决。)吧?复制Xpath来保存采集方案只能解决一部分问题,对于比如标题之类的设置,都没办法通过复制Xpath来保存。

3.由于一个永远存在的“下一页”导致陷入loop的问题: 

情况说明:

携程最后一页仍然有“下一页”的按钮,并且仍然可以“点击”(跳转到当前页面,也就是尾页),从而会(1)造成一直在点击,无法自动终止采集(2)对于一个任务多连接采集的情况,会一直停留在第一个连接的尾页,无法跳转到下面的链接采集。

解决方案:

因为我的目的是采集所有的评论,所以我采取的方案是把所有的店铺连接按照其有的评论数量打包成不同的链接包:比如因为一页有10条评论,我就把有1-10条评论的店铺的URL打包在一起采集,然后对于这些店铺设置无需翻页。然后再把有11-20条评论的店铺的URL再打包在一起采集,然后对于这些URL设置最大翻页数量为2页,因为2页足以采集到所有的评论。以此类推,因为评论数量越大,有这么大评论数量的店铺就越少。所以往后可以把有20-50条评论的店铺、有51-200条评论的店铺打包在一起,设置翻页5次,20次的限制......这样便解决掉因为携程翻页设置的特殊性导致的无限loop问题。但是,这样做。。。巨麻烦。。。希望有更好的解决方法。这次采集时间很长,也是因为用了这种处理,导致数据被分成了几十份抓取。

不过好处是提升了稳定性,分部抓取的好处就是一部分挂掉了只要用很短的时间修理这部分就行了,然后对于后羿这种稳定性。。。真的捕星的采集器(不过人家是免费的所以也不错了)来说,也避免了采集了20000条数据后突然挂掉,又要重新从第一条采集到20000条的风险。所以这种处理虽然麻烦,也算一种手动优化吧(手动滑稽。jpg),但是手动优化始终很麻烦,最好的解决方式就是采集器能把采集过程设计能够设计成分块处理:现在的采集器很多都是从1一个个采集到999999999的,如果其中一个出了错,999999999都要重新采集,实在是使用路上的一大问题!

总结经验:

(1)感受到一种内功心法:无限loop 与 determine+limit的对立关系。

(2)在抓取数量较大的数据的时候,可以有意识的采用分块抓取,不把鸡蛋放在同一个篮子里。不过手动分块抓取毕竟真的很麻烦,所以还是很希望有自动分块抓取。


接下来是一些乌龙和吐槽的记录:

1、上面说到,因为抓取出来的店铺URL连接是错误的,所以这意味着我需要重新抓取一次。但是这个时候很尴尬的是,之前用的那个爬墙虎还是什么的采集器一天只能免费采集1000条,而我之前已经采集了910多条,这意味着我需要等到第二天才能采集。于是。。。后面300多条都是一个个自己手工采集的。。。好处是(1)采集出来的连接绝对靠谱(2)不拖进度(3)可以顺带把每个店是干什么的看了,把标签打了。然后。。。不好的地方也不言而喻,很耗时耗力。(是“耗”,而不是“费”)

2、关于打tag这件事。本来是不准备打的,因为携程的连接里面就已经把澳门购物按照商品分成了七大类,所以本来的计划是打开这七大类,把店铺连接抽出来,然后爬取链接里的评论。像之前的列表一样。然而,当我打开这七大类,就震惊了:七大类里面,每一类,居然只有零零散散的几家店。甚至在葡萄酒那一大类中居然只有澳门的某一家来来超市。还不是所有来来超市,只是某一家。所以在此吐槽下携程对每个商户的商品的tag打的真的是捕星。所以后来只能自己给这900多家商户分类,一个个给其定位,打标签,然后按照不同种类抓取数据。(应该把这些打好的标签卖给携程,督促一下他们的打标签工作!(不过打标签这种事明明可以开源来做呀,让网友来打呀,为什么没有这个功能呢?(因为不是很重要?没有什么直接利益?而且如果让携程的员工打标签也是耗时耗力的一件事hhh。(最后写的这草是因为网吧上机时间要结束啦!不想再开一小时了!如果有没说完的回去想想,有机会再补充!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 33款可用来抓数据的开源爬虫软件工具 要玩大数据,没有数据怎么玩?这里推荐一些33款开源爬虫软件给大家。 爬虫,即...
    visiontry阅读 7,275评论 1 99
  • 爬虫,即网络爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而...
    AttackCoder阅读 500评论 0 0
  • 你爬了吗? 要玩大数据,没有数据怎么玩?这里推荐一些33款开源爬虫软件给大家。 爬虫,即网络爬虫,是一种自动获取网...
    Albert新荣阅读 2,218评论 0 8
  • 要玩大数据,没有数据怎么玩?这里推荐一些33款开源爬虫软件给大家。 爬虫,即网络爬虫,是一种自动获取网页内容的程序...
    评评分分阅读 7,970评论 2 121
  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,653评论 4 46