Не могу получить Scrapy по ссылкам - PullRequest
2 голосов
/ 13 августа 2011

Я пытаюсь почистить веб-сайт, но я не могу получить scopy для перехода по ссылкам, и я не получаю никаких ошибок Python, и я не вижу ничего, что происходит с Wireshark. Я думал, что это может быть регулярное выражение, но я пытался ". *", Чтобы попытаться перейти по любой ссылке, но это тоже не работает. Хотя метод "parse" работает, но мне нужно следовать "sinopsis.aspx" и обратному вызову parse_peliculas.

Редактировать: Комментирование метода parse приводит к тому, что правила работают ... parse_peliculas запускается, теперь мне нужно изменить метод parse на другое имя и создать правило с обратным вызовом, но я все еще не могу заставить его работать. 1003 *

Это мой код паука:

import re

from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from Cinesillo.items import CinemarkItem, PeliculasItem

class CinemarkSpider(CrawlSpider):
    name = 'cinemark'
    allowed_domains = ['cinemark.com.mx']
    start_urls = ['http://www.cinemark.com.mx/smartphone/iphone/vercartelera.aspx?fecha=&id_theater=555',
                  'http://www.cinemark.com.mx/smartphone/iphone/vercartelera.aspx?fecha=&id_theater=528']


    rules = (Rule(SgmlLinkExtractor(allow=(r'sinopsis.aspx.*', )), callback='parse_peliculas', follow=True),)

    def parse(self, response):
        item = CinemarkItem()
        hxs = HtmlXPathSelector(response)
        cine = hxs.select('(//td[@class="title2"])[1]')
        direccion = hxs.select('(//td[@class="title2"])[2]')

        item['nombre'] = cine.select('text()').extract()
        item['direccion'] = direccion.select('text()').extract()
        return item

    def parse_peliculas(self, response):
        item = PeliculasItem()
        hxs = HtmlXPathSelector(response)
        titulo = hxs.select('//td[@class="pop_up_title"]')
        item['titulo'] = titulo.select('text()').extract()
        return item

Спасибо

1 Ответ

8 голосов
/ 13 августа 2011

При написании правил паука для обхода избегайте использования parse в качестве обратного вызова, поскольку CrawlSpider использует сам метод parse для реализации своей логики. Так что если вы переопределите метод разбора, паук сканирования больше не будет работать.

http://readthedocs.org/docs/scrapy/en/latest/topics/spiders.html

...