我正在编写一个爬虫来从网站获取项目的名称。该网站每页有 25 个项目和多个页面(某些项目类型为 200 个)。
这是代码:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from lonelyplanet.items import LonelyplanetItem
class LonelyplanetSpider(CrawlSpider):
name = "lonelyplanetItemName_spider"
allowed_domains = ["lonelyplanet.com"]
def start_requests(self):
for i in xrange(8):
yield self.make_requests_from_url("http://www.lonelyplanet.com/europe/sights?page=%d" % i)
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//h2')
items = []
for site in sites:
item = LonelyplanetItem()
item['name'] = site.select('a[@class="targetUrl"]/text()').extract()
items.append(item)
return items
当我运行爬虫并以 csv 格式存储数据时,数据未按顺序存储,即 - 第 2 页数据存储在第 1 页之前或第 3 页存储在第 2 页之前,类似地。有时在存储特定页面的所有数据之前,另一个页面的数据会进入,并且前一页面的其余数据会再次存储。