从Scrapy爬行中删除“#”链接
问题描述:
我是网站上的running this spider。它工作正常,但我遇到的一个问题是有许多带有“#”作为链接的hrefs。从Scrapy爬行中删除“#”链接
如何跳过或放弃这些#链接?我正在输出指向当前文件的链接,并使用lstrip
转储文件“”。我也试过i.replace
,但它仍然在文件中留下一条空行。
答
对于与您的选择器匹配的所有内容,您是yield
ing。有条件yield
,所以转换:
for i in selector.extract():
yield {"url": i.lstrip('#')}
成类似
for i in selector.extract():
url = i.lstrip('#')
if url:
yield {"url": url}
答
为了跳过这些链接,您需要更改XPath表达式提取href属性,只有当他们不含有“#”
selector = response.xpath('//*/a[not(contains(@href, "#"))]/@href')
+0
完美的工作!我以前实际上已经尝试过'not(contains())',但看起来我的语法错了。谢谢! –
你能澄清你的意图吗?你想从字符串中删除'#'吗?忽略这一切? –
在这里发布代码*的相关部分通常是一个好主意,而不是将它们放在某个第三方链接上。 –