Код Python Scrapy не рекурсивно проходит по ссылкам - PullRequest
0 голосов
/ 09 июня 2018

Когда я запускаю этот код в терминале, он проходит только через первую страницу.Он не переходит по другим ссылкам с начального URL.Я не очень хорошо разбираюсь в регулярных выражениях, так ли это?Я следовал учебнику на YouTube, который почти идентичен моему коду, и он работал отлично.Так что я не уверен, в чем проблема для этого.

from scrapy.selector import Selector
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from ScrapBooks.items import ScrapbooksItem

class AlibrisspiderSpider(CrawlSpider):

    name = "as"
    allowed_domains = ["alibris.com"]

    start_urls = ["https://www.alibris.com/search/books/subject/mystery/"]

    rules = ( Rule(SgmlLinkExtractor(allow = "www\.alibris\.com.*"), 
    callback = "parse_item", follow = True), )


    def parse_item(self, response):
        sel = Selector(response)
        item = ScrapbooksItem()
        item['URL'] = response.request.url
        item['bookLink'] = sel.xpath('//*[@id="selected-works"]/ul/li/a').extract()
        self.log("********* Inside Parse Method ********")
        return item

Ниже приведены мои items.py класс


import scrapy
from scrapy.item import Item, Field

class ScrapbooksItem(Item):
    # define the fields for your item here like:
    # name = scrapy.Field()

    URL = Field()
    bookLink = Field()

1 Ответ

0 голосов
/ 09 июня 2018

Не вернуть товар, вернуть его,

Использовать yield вместо o возвращение в конце parse_item

...