不能让scrapy爬行

时间:2014-03-30 16:17:53

标签: python web-scraping scrapy

我试图了解Scrapy的工作原理,但无法弄清楚如何让它爬行。

我希望抓取的网站有一个页面http://www.example.com/Jason,其中包含http://www.example.com/Jason:Aronhttp://www.example.com/Jason:Dan_De等格式的链接。

我设法抓取http://www.example.com/Jason:Aron这样的网页上的文字,但我无法从http://www.example.com/Jason开始抓取并抓取所有链接的网页。

这是我的蜘蛛:

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

from tutorial.items import Item

class Spider(CrawlSpider):
    name = "text"
    allowed_domains = ["example.com"]
    start_urls = [
        "http://www.example.com/Jason",
        "http://www.example.com/Jason:Aron",
    ]

    rules = (Rule (SgmlLinkExtractor(allow=('Jason:*')), callback='parse'),)

    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath('//div[@class="textbox"]')
        items = []
        for site in sites:
            item = Item()
            item['text'] = site.xpath('text()').extract()
            items.append(item)
        return items

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

当您使用CrawlSpider时,最好不要覆盖parse()方法:

  

编写爬网蜘蛛规则时,请避免使用parse作为回调,因为CrawlSpider使用parse方法本身来实现其逻辑。因此,如果您覆盖解析方法,则爬网蜘蛛将不再起作用。

callback="parse"更改为callback="parse_item",然后重试。