2016-08-29 9 views
0

です。特定のドメインに対して単純なLinkExtractorルールがあります。次のようなものがあります:Rule(LinkExtractor(allow=('domain\.com/.+/\d+',)), callback='parse_page'),ページ内でのリンクの順序はScrapy

私は何を望みますか、わかりません。ページ内のリンクがどの位置にあるかを知ることです。

たとえば、ルールに一致する5つのリンクがページ上にある場合、HTMLの上から下に順番を知る必要があります。

私は、抽出の順序について多くの質問が見つからなかったが、何も、または私はHTML

答えて

1

Scrapyは、HTMLの解析のためにlxmlのを使用して、リンク自体の順序についての何かを、誤解。 LinkExtractorroot.iter()を使用して反復処理します。 This line to be more exact.

Lxml's docs say:

要素は、この目的のために木のイテレータを提供します。

をので、HTMLソースのために:

<root> 
    <child>Child 1</child> 
    <child>Child 2</child> 
    <another>Child 3</another> 
</root> 

を、それがもたらすであろう:

をそれはあなたが は、XMLにツリーをシリアライズ場合は順番にそのタグが表示されますつまり、ドキュメント順に要素 を生み出します
>>> for element in root.iter(tag=etree.Element): 
...  print("%s - %s" % (element.tag, element.text)) 
root - None 
child - Child 1 
child - Child 2 
another - Child 3 

上記のlxml docsリンクに記載されている例を使用して、プロセスを複製することができます。

関連する問題