"太极生两仪,两仪生四象,四象生八卦我不懂,但是写程序嘛,都是0到1,1到N。" --by 我自己

这个commit想做到的是不仅仅只能够爬取到首页的内容,希望能够看到第二页,甚至第N页的内容。在reset到相应的commit之后,使用如下命令:

你应该能看到如下的结果:

你可以很容易的去对应网站上去查看一下,这里可以爬到第二页的结果了。

其实如何能够翻译,其唯一的难点就是找到每一页的链接,唯一的顾虑就是每一页的链接没有规律,比如会带一个随机数等等。但是无论如何,尝试是迈向程序成功的第一步。所以,还是按照之前的三板斧,把页面滚到最底部有页码的地方,使用选取工具放在第2页上面,你会得到一个类似这样的链接,不,如果你随意扫一下是这样的一组链接:

这里你能得到两个信息,一是第二页的链接,第二个就是每一页的链接都是有规律的,除了页码数字变化,没有任何变化。喜出望外,大喜至极是不是?这就说明了,循环是一个靠谱的选择嘛!这也就是为什么从commit1里面就有的nTestCount在这里就会发生作用了!

从66行开始,先使用刚才三板斧获取的结果加上页码获得新的网页源码,剩下的因为每一页的结构都是一样的,所以事情就变得异常简单了。将获取的源码放到BeautifulSoup中,重新构造一下新的allItemInfo,保险起见,我会采取先清空的方式。因为我这个人,还是比较谨慎的。

有了前面的积累,这个commit就真的只有这么多内容,这和写程序很像。最开始是比较慢的,但是后面会越来越快。我的commit里只有2页,而你只要把nTestCount改成50,你就有50页了。当然页数一多,时间就会变长,况且我这里还没有加入防御性的sleep。而时间一长,不可控的事情就越多,也许你人品真的很好,50页甚至500页都一次性跑完了并且没有任何的错误。但是大多数时候,这种爬虫程序会因为网络不稳定或者种种原因,crash了。这时候你会感到痛心疾首。想象这么一个场景,在12点的时候你长舒一口气,带着成就感与满足感开始运行的你的爬虫,想着一觉醒来就有数据了,而这个时候自己又得到了休息,自己简直是一个统筹学的天才。但是,第二天醒来,你发现你的爬虫在循环的第三次就crash了。你看着屏幕上输出的trace back,一边心里想,我TM才不想知道到底网络出了什么问题,一边觉得自己似乎失去了一个晚上。所以,爬虫,不能没有异常处理。

results matching ""

    No results matching ""