断断续续学习爬虫已经半月有余,沉迷bug中无法自拔。这两天准备搭建基于requests库的小型网络爬虫标准框架用于天猫商城的任意商品的爬取。基础代码非常简洁明了,比其他代码清晰不少。然而昨天还能使用的代码,今天早上就不能用了,无法爬取任何内容,但是无代码错误。最后还是用print大法(大赞print大法)对各个变量和列表进行打印,逐个分析,发现是name列表出了问题,然而name列表是直接用beautifulsoup库的汤匙soup直接烹饪出来的新鲜列表,那么肯定是网页的问题,遂重新找到原网页代码,认真分析发现,框架结构已经变了。那么原因就找到了,我们就可以对症下药了,最后我只改动了两处地方:
name = soup("p","productTitle")
ls.append([price[counter].em.contents[1], name[counter].a.contents[0].string])
**心得:**由于对python语言和爬虫原理不是特别熟练,调本次bug特别费劲,第一就是找原因的时候一开始没想起来print大法,在自己胡乱试错,好在最后解决了,以后调bug都要遵循基本思路,不能乱来;第二就是修改上两句时,由于python语言的基本功不是特别扎实,改动时走了很多弯路,特别是contents到现在也没明白0、1、2的位置是如何区分的,我目前的理解是contents选取的是某一标签的第i个属性值,(i是从后往前的)但是注意的是,实践过程中发现,requests爬取的标签顺序与查看网页源代码的顺序是不一致的,所以要先print再选取顺序。若是理解有错,欢迎指出!