在一个scrapy的爬虫里,最重要的当然是蜘蛛(Spider)类,因为它不仅控制着爬虫向何处去,还要控制爬虫从网站上拿些什么数据下来。向何处去的问题,也就是爬虫要知道那些超级连接才有价值,那些不需要执行,解决了方向的问题。就像一辆汽车,首要的问题是保证方向,否则会开错方向,导致南辕北辙,如果错误的方向就进入了死循环里。另外一个问题,也就是方向没有错了,但是从网站里收集些什么数据,这些数据是否收集到了,又或者这些数据是否足够了。体现了这些数据价值程度,也就是意味着爬虫是否达到我们需要的目标。
对于一个蜘蛛类来说,它的爬行过程大体如下:
1)首先通过指定的第一个URL来生成一个请求Requests,并且设置下载数据返回response 的回调函数。第一个请求 Request是通过函数 start_requests() 来生成,它主要从 start_urls里获取URL连接,接着把 parse方法设置到请求的回调函数里。
2)在请求的回调函数里,分析网页返回对象,然后产生item对象、请求Request对象、或者这些可迭代对象。同时在新的请求里又设置了回调函数,而回调函数可以是跟前面请求的回调函数一样,也可以不一样,具体根据自己的需求来定。因此当这些请求再次被下载之后,又会调用这些绑定在请求中的回调函数。
&