2017-02-20 37 views
-1

私はサイト上でrunning this spiderです。それは正常に動作しますが、私が取り組んでいる問題の1つは、リンクに "#"が付いた多数の階層があることです。"#"リンクをScrapyクロールから削除する

これらのリンクをすべてスキップしたり削除したりするにはどうすればよいですか?私は現在ファイルへのリンクを出力していて、lstripをファイルにダンプ ""します。私もi.replaceを試しましたが、それでもファイルに空白行が残っています。

+0

あなたの意図を明確にすることはできますか?文字列から '#'を削除しますか?それをすべて無視する? –

+0

いくつかのサードパーティのリンクでそれらをホストするのではなく、コード*の関連部分をここに*掲載することは、一般的には良い考えです。 –

答えて

1

セレクタに一致するものはすべてyieldです。条件付きyield、その変換:

for i in selector.extract(): 
    yield {"url": i.lstrip('#')} 

for i in selector.extract(): 
    url = i.lstrip('#') 
    if url: 
     yield {"url": url} 
0

のようなものの中に、これらのリンクをスキップするためには、あなたは彼らが「#」を含まない場合にのみ、href属性を抽出するために、XPath式を変更する必要があります

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

これは完璧に機能しました!私は以前に 'not(contains())'を試みましたが、私の構文が間違っているようです。ありがとう! –

関連する問題