首页 文章

不能让scrapy爬行

提问于
浏览
0

我试图了解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

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

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

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

相关问题