1

ScrapyBaseSpiderを使用してWebサイトからデータを収集しています。スクレーパーは製品の表示ページから始まり、「次の」ページのリンクに移動し、各ページから特定のデータを収集してCSVファイルに保存します。スパイダーは正しく動作しますが、データを収集するのは1ページ目、2ページ目、および最後のページ(36ページ)のみです。コードを数時間いじった後、理由がわかりません。次のコードは私のスパイダーを示しています。助言がありますか?

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.http.request import Request
from longs.items import LongsItem
from scrapy.utils.response import get_base_url
import urlparse

class LongsComSpider(BaseSpider):
    name = "longs"
    allowed_domains = ["longswines.com"]
    start_urls = ["http://www.longswines.com/wines/?page=3&sortby=winery&item_type=wine"]

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select("//div[@class='pagebox']/a[6]/@href")
        for site in sites:
            relative_next_page = site.extract()
            next_page = [urlparse.urljoin(response.url, relative_next_page)]
            if not not relative_next_page:
            yield Request(next_page[0], self.parse)

        products = hxs.select("//div[@class='productlistitem']")
        items = []
        for product in products:
            item = LongsItem()
            item["title"] = product.select("div[1]/h2/a/text()").extract()
            item["link"] =  response.url
            item["price"] = product.select("div[2]/h2/text()").extract()
            item["details"] = product.select("div[1]/p/text()").extract()
            items.append(item)
        for item in items:
            yield item
4

1 に答える 1

0

この行に問題があると思います

if not not relative_next_page:

あなたはnotそこに2つ持っています

于 2013-01-25T05:47:06.287 に答える