我正在尝试在html方向上垂直抓取遵循一个简单规则的页面:
他们有/MLA####或/MLA-# (#作为随机数)
问题是,对于下面的代码,当/MLA####或/####MLA###页面出现时,scrapy只能检测到名称为/MLA-#的页面,我的scrapy代码不起作用,而且抓取是错误的
rules = (Rule(LinkExtractor(allow=r'/_Desde_'), follow=True),
Rule(LinkExtractor(allow='/'+'MLA'), follow=True, callback='parse_items'))以前是这样的:
rules = (Rule(LinkExtractor(allow=r'/_Desde_'), follow=True),
Rule(LinkExtractor(allow=r'/MLA'), follow=True, callback='parse_items'))那么,我该如何对我的代码说:我想要抓取所有包含MLA的链接,而不管这些单词之前或之后是什么。
感谢您的评论,致以问候
发布于 2020-10-21 19:45:11
事实上,'/' + 'MLA'完全等同于'/MLA' (:它是关于字符串连接的。您需要的是几个正则表达式。
我想Rule(LinkExtractor(allow=[r'\d+MLA', r'MLA-\d+'], follow=True, callback='parse_items')会为你工作的。读一读正则表达式--它是抓取的必备知识。在本例中,一切都很简单:我们有MLA和/d+,它们代表一个或多个数字。
祝好运。
https://stackoverflow.com/questions/64460831
复制相似问题