是否可以获取URL并将其与正则表达式一起使用以生成请求(Scrapy)

时间:2014-03-07 18:41:28

标签: regex url web-crawler scrapy

我想问一下Scrapy是否可以选择仅使用URL和正则表达式来抓取网站。 当我提取某些信息时,您需要使用规则(并不总是)来提取链接并将这些链接提供给需要信息的页面,但我的意思是,是否可以获取URL并将其与正则表达式一起使用以生成请求而不是解析结果。

举个例子,我们来看看这个网址:

的http //:www.example.com/date/2014/news/117

假设所有文章都在URL“/ 117”的最后部分。 所以在我看来,为URL编写正则表达式会更容易:

http//:www.example.com/date/2014/news/\d+

如果使用这个正则表达式,您可以向页面发出HTTP请求,在某些情况下它会变得非常简单。 我不知道有这样的方式吗?

1 个答案:

答案 0 :(得分:1)

右侧link extractor的CrawlerSpider可以做到这一点,请参阅scrapy docs中的示例:

class MySpider(CrawlSpider):
    ...
    rules = (
        # Extract links matching 'category.php' (but not matching 'subsection.php')
        # and follow links from them (since no callback means follow=True by default).
        Rule(SgmlLinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),

        # Extract links matching 'item.php' and parse them with the spider's method parse_item
        Rule(SgmlLinkExtractor(allow=('item\.php', )), callback='parse_item'),
    )

    ...