Scrapy не даст результатов с первой страницы - PullRequest
0 голосов
/ 07 февраля 2012

вот мой паук:

from scrapy.contrib.spiders import CrawlSpider,Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from vrisko.items import VriskoItem

class vriskoSpider(CrawlSpider):
    name = 'vrisko'
    allowed_domains = ['vrisko.gr']
    start_urls = ['http://www.vrisko.gr/search/%CE%B3%CE%B9%CE%B1%CF%84%CF%81%CE%BF%CF%82/%CE%BA%CE%BF%CF%81%CE%B4%CE%B5%CE%BB%CE%B9%CE%BF']
    rules = (
        Rule(SgmlLinkExtractor(allow=('\?page=\d')), callback='parse_vrisko'),
    )
    def parse_vrisko(self, response):

        hxs = HtmlXPathSelector(response)
        vriskoit = VriskoItem()
        vriskoit['eponimia'] = hxs.select("//a[@itemprop='name']/text()").extract()
        vriskoit['address'] = hxs.select("//div[@class='results_address_class']/text()").extract()
        print ' '.join(vriskoit['eponimia']).join(vriskoit['address'])
        return vriskoit

Страницы, которые я пытаюсь сканировать, имеют формат http://www.blabla.com/blabla/bla?page=x где x = любое целое число.

Моя проблема в том, что мой паук сканирует все страницы, кроме первой! Есть идеи, почему это происходит?

Заранее спасибо!

1 Ответ

2 голосов
/ 07 февраля 2012

Если вы загляните в документ Scrapy, ответ start_urls перейдет к **

синтаксический анализ

** метод

чтобы вы могли изменить свое правило следующим образом

rules = ( Rule(SgmlLinkExtractor(allow=('\?page=\d')), callback='parse'), )

и имя метода от def parse_vrisko(self, response): до def parse(self, response):

или вы можете удалить start_urls и запустить своего паука с def start_requests(self): с обратным вызовом parse_vrisko

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...