Scrapy-selectorlist-objects
提供:Dev Guides
Scrapy-Selectorlistオブジェクト
HTML応答のセレクターの例
HTMLResponseの例の一部を次に示します。次のように、セレクタでインスタンス化されるHTMLResponseオブジェクトがあります-
res = Selector(html_response)
次のようにSelectorListオブジェクトを返すHTML応答本文から h2 要素を選択できます-
>>res.xpath("//h2")
あなたは、HTMLレスポンスボディから h2 要素を選択することができます。これは、ユニコード文字列のリストを返します-
>>res.xpath("//h2").extract()
h2要素を返します。
and
>>res.xpath("//h2/text()").extract()
h2タグの下で定義されたテキストを返しますが、h2タグ要素は含まれません。
あなたはpタグを介して実行し、クラス属性を表示することができます-
for ele in res.xpath("//p"):
print ele.xpath("@class").extract()
XML応答のセレクターの例
以下はXMLResponseの例の一部であり、次のようにセレクタでインスタンス化されるXMLResponseオブジェクトがあります-
res = Selector(xml_response)
次のようにSelectorListオブジェクトを返すXML応答本文から説明要素を選択できます-
>>res.xpath("//description")
名前空間を登録することにより、Google Base XMLフィードから価格の値を取得できます-
>>res.register_namespace("g", "http://base.google.com/ns/1.0")
>>res.xpath("//g:price").extract()
名前空間の削除
Scrapyプロジェクトを作成する場合、Selector.remove_namespaces()メソッドを使用して名前空間を削除し、要素名を使用してXPathを適切に操作できます。
プロジェクトで常に名前空間削除手順を呼び出さない理由は2つあります-
- ドキュメントを繰り返し、すべての要素を変更する必要があるネームスペースを削除して、Scrapyでドキュメントをクロールするための高価な操作につながることができます。
- 場合によっては、名前空間を使用する必要があり、これらはいくつかの要素名および名前空間と競合する可能性があります。 このタイプのケースは非常に頻繁に発生します。