我想问一下Scrapy是否可以选择仅使用URL和正则表达式来抓取网站。 当我提取某些信息时,您需要使用规则(并不总是)来提取链接并将这些链接提供给需要信息的页面,但我的意思是,是否可以获取URL并将其与正则表达式一起使用以生成请求而不是解析结果。
举个例子,我们来看看这个网址:
的http //:www.example.com/date/2014/news/117
假设所有文章都在URL“/ 117”的最后部分。 所以在我看来,为URL编写正则表达式会更容易:
http//:www.example.com/date/2014/news/\d+
如果使用这个正则表达式,您可以向页面发出HTTP请求,在某些情况下它会变得非常简单。 我不知道有这样的方式吗?
答案 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'),
)
...