私はサイト上でrunning this spiderです。それは正常に動作しますが、私が取り組んでいる問題の1つは、リンクに "#"が付いた多数の階層があることです。"#"リンクをScrapyクロールから削除する
これらのリンクをすべてスキップしたり削除したりするにはどうすればよいですか?私は現在ファイルへのリンクを出力していて、lstrip
をファイルにダンプ ""します。私もi.replace
を試しましたが、それでもファイルに空白行が残っています。
私はサイト上でrunning this spiderです。それは正常に動作しますが、私が取り組んでいる問題の1つは、リンクに "#"が付いた多数の階層があることです。"#"リンクをScrapyクロールから削除する
これらのリンクをすべてスキップしたり削除したりするにはどうすればよいですか?私は現在ファイルへのリンクを出力していて、lstrip
をファイルにダンプ ""します。私もi.replace
を試しましたが、それでもファイルに空白行が残っています。
セレクタに一致するものはすべてyield
です。条件付きyield
、その変換:
for i in selector.extract():
yield {"url": i.lstrip('#')}
for i in selector.extract():
url = i.lstrip('#')
if url:
yield {"url": url}
のようなものの中に、これらのリンクをスキップするためには、あなたは彼らが「#」を含まない場合にのみ、href属性を抽出するために、XPath式を変更する必要があります
selector = response.xpath('//*/a[not(contains(@href, "#"))]/@href')
これは完璧に機能しました!私は以前に 'not(contains())'を試みましたが、私の構文が間違っているようです。ありがとう! –
あなたの意図を明確にすることはできますか?文字列から '#'を削除しますか?それをすべて無視する? –
いくつかのサードパーティのリンクでそれらをホストするのではなく、コード*の関連部分をここに*掲載することは、一般的には良い考えです。 –