从Scrapy爬行中删除“#”链接

问题描述:

我是网站上的running this spider。它工作正常,但我遇到的一个问题是有许多带有“#”作为链接的hrefs。从Scrapy爬行中删除“#”链接

如何跳过或放弃这些#链接?我正在输出指向当前文件的链接,并使用lstrip转储文件“”。我也试过i.replace,但它仍然在文件中留下一条空行。

+0

你能澄清你的意图吗?你想从字符串中删除'#'吗?忽略这一切? –

+0

在这里发布代码*的相关部分通常是一个好主意,而不是将它们放在某个第三方链接上。 –

对于与您的选择器匹配的所有内容,您是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())',但看起来我的语法错了。谢谢! –