在ord中没有抓取后续页面

2024-10-01 17:41:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个爬虫从一个网站获取项目的名称。该网站每页有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页之前。有时在存储某个页面的所有数据之前,另一个页面的数据就会进来,而前一个页面的其余数据也会被再次存储。在


Tags: 数据项目fromimportself网站items页面
1条回答
网友
1楼 · 发布于 2024-10-01 17:41:49

scrapy是一个异步框架。它使用非阻塞IO,因此在启动下一个请求之前不会等待请求完成。在

由于一次可以发出多个请求,因此不可能知道parse()方法获得响应的确切顺序。在

我的观点是,scrapy并不是要按特定的顺序提取数据。如果你绝对需要维护秩序,这里有一些想法: Scrapy Crawl URLs in Order

相关问题 更多 >

    热门问题