【问题标题】:Can't get Scrapy to follow links无法让 Scrapy 关注链接
【发布时间】:2011-10-26 03:06:51
【问题描述】:

我正在尝试抓取一个网站,但我无法抓取链接,并且我没有收到任何 Python 错误,而且我看不到 Wireshark 发生任何事情。我认为它可能是正则表达式,但我尝试了“。*”来尝试跟踪任何链接,但它也不起作用。 “parse”方法确实有效,但我需要遵循“sinopsis.aspx”和回调 parse_peliculas。

编辑:注释 parse 方法使规则工作... parse_peliculas 开始运行,我现在要做的是将 parse 方法更改为另一个名称并使用回调制定规则,但我仍然无法让它工作。

这是我的蜘蛛代码:

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

谢谢

【问题讨论】:

    标签: python regex screen-scraping scrapy


    【解决方案1】:

    在编写爬虫规则时,避免使用 parse 作为回调,因为 CrawlSpider 使用 parse 方法本身来实现其逻辑。 所以如果你重写 parse 方法,爬虫将不再 工作。

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

    【讨论】:

    • 是的,我已经知道了。我正在考虑将 parser 重命名为 parser_cinema 但我怎么能调用那个方法呢??
    • 对于每个规则,您提供一个回调方法。你已经提供了一个回调方法parse_peliculas。只需删除您的“解析”方法即可。
    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多