抓痒的python CrawlSpider无法爬行

时间:2019-04-24 08:35:37

标签: python scrapy web-crawler

import scrapy 
from scrapy.spiders.crawl import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 

class MySpider(CrawlSpider):
    name = 'genericSpider'
    allowed_domains = ['example.com']
    start_urls = [url_1, url_2, url_3]

    rules = [
        Rule(
            LinkExtractor(),                     
            callback='parse',   
            follow=True        
        ),
    ]

    def parse(self, response): 
        hxs = scrapy.Selector(response)
        links = hxs.xpath('*//a/@href').extract()
        for link in links:
            print(link)
        print()

我正在尝试抓取网站。对于我的代码示例,我只是提取所有链接并将它们打印到终端。

此过程非常适合start_urls中的URL,但似乎爬虫似乎不会抓取提取的URL。

这是CrawlSpider的重点,对吗?访问页面,收集其链接并访问所有这些链接,直到其用尽?

我被困了几天,任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

问题是您将方法命名为parse。根据{{​​3}},在使用CrawlSpider时应避免使用此名称,因为它会引起问题。只需将方法重命名为parse_link(并在callback中调整Rule参数),它将起作用。

此外,请记住,allowed_domains属性必须与您要抓取的URL匹配。