2017-02-20 134 views
-1

我是網站上的running this spider。它工作正常,但我遇到的一個問題是有許多帶有「#」作爲鏈接的hrefs。從Scrapy爬行中刪除「#」鏈接

如何跳過或放棄這些#鏈接?我正在輸出指向當前文件的鏈接,並使用lstrip轉儲文件「」。我也試過i.replace,但它仍然在文件中留下一條空行。

+0

你能澄清你的意圖嗎?你想從字符串中刪除'#'嗎?忽略這一切? –

+0

在這裏發佈代碼*的相關部分通常是一個好主意,而不是將它們放在某個第三方鏈接上。 –

回答

1

對於與您的選擇器匹配的所有內容,您是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} 
0

爲了跳過這些鏈接,您需要更改XPath表達式提取href屬性,只有當他們不含有「#」

selector = response.xpath('//*/a[not(contains(@href, "#"))]/@href') 
+0

完美的工作!我以前實際上已經嘗試過'not(contains())',但看起來我的語法錯了。謝謝! –