使用刮擦选择器(https://doc.scrapy.org/en/latest/topics/selectors.html#regular-expressions),我尝试选择具有href
属性的网页元素,该属性具有特定数量的正斜杠,例如/foo/
或/foo/bar/
(也总是以/
开头和结尾)。你知道吗
到目前为止,为了匹配像/foo/bar/
这样的相对url,我想出了
In [24]: re.match('^/[^/]+/[^/]+/$', '/foo/bar/')
Out[24]: <_sre.SRE_Match object; span=(0, 9), match='/foo/bar/'>
然而,对越来越多的斜杠(例如/foo/bar/bam/
)重复这一点对我来说似乎是不必要的冗长。有没有更简洁的方法将字符串与给定的斜杠数(不是任何数)进行匹配?你知道吗
我在正则表达式方面比其他人慢很多。您确实指出要检查特定的斜杠数。这似乎可以做到。你知道吗
您可以使用此正则表达式匹配由
/
分隔的任意数量的子目录:^
-开始(?:/[^/]+)*
匹配0个或多个/
,后跟一个或多个non-/
字符串[^/]+
匹配路径的最后一个组件/?$
最后匹配选项/
要在html正文中获取URL,最好使用^{} :
您还可以在LinkExtractor中保留including规则,以实际匹配更好的链接。你知道吗
相关问题 更多 >
编程相关推荐