简体   繁体   English

Scrapy不想转到下一个网址

[英]Scrapy doesn't want to go to next url

I have a problem with forcing scrapy to go to another page. 我在强制刮y去另一页时遇到问题。 I am trying to get all of the Opera schedules for different months. 我正在尝试获取不同月份的所有Opera时间表。

Each of the adresses that I need looks like this: "" http://www.opera.krakow.pl/pl/repertuar/na-afiszu/ + name of the month 我需要的每个地址如下:“” http://www.opera.krakow.pl/pl/repertuar/na-afiszu/ +月份名称

That's why I've made a list of the months and tried to iterate over them but somehow Scrapy just ignores it. 这就是为什么我列出了几个月并尝试遍历它们的原因,但是Scrapy却以某种方式忽略了它。 I tried to print all the URLs collected by "next_page" and they are all correct. 我试图打印“ next_page”收集的所有URL,它们都是正确的。

import scrapy
from ..items import ShowItem, ShowItemLoader
from scrapy.selector import HtmlXPathSelector


class OperaSpider(scrapy.Spider):
    name = "opera"
    allowed_domains = ["http://www.opera.krakow.pl"]
    start_urls = [
        "http://www.opera.krakow.pl/pl/repertuar/na-afiszu/listopad"

]
    shows_list_xpath = '//div[@class="row-fluid row-performance    "]'
    item_fields = {
        'month':'.//ul[@class="nav nav-pills nav-repertuar"]/li[@class="active"]/a/text()',
        'title': './/h2[@class="item-title"]/a/text()',
        'time': './/div[@class="item-time vertical-center"]/div[@class="vcentered"]/text()',
        'date': './/div[@class="item-date vertical-center"]/div[@class="vcentered"]/text()',

}


def parse(self, response):

    selector = HtmlXPathSelector(response)

    for show in selector.select(self.shows_list_xpath):
        loader = ShowItemLoader(ShowItem(), selector=show)

        for field, xpath in self.item_fields.iteritems():
            loader.add_xpath(field, xpath)
        yield loader.load_item()


    list = ["styczen", "luty"
        , "marzec", "kwiecien"
        , "maj", "czerwiec"
        , "lipiec", "sierpien"
        , "wrzesien", "pazdziernik"
        , "listopad", "grudzien"]

    for i in list:
        next_page = ("http://www.opera.krakow.pl/pl/repertuar/na-afiszu/%s" % i)
        yield scrapy.Request(next_page, callback=self.parse)

scrapy只对请求网址的netloc进行scrapy检查allowed_domains ,则需要将http://www.opera.krakow.pl更改为opera.krakow.pl

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM