Scrapyラーニングノート02-セレクタ
3096 ワード
原文アドレス:LoveDev
Scrapy抽出データには独自のメカニズムがあります.これらはセレクタ(seletors)と呼ばれ、HTMLファイルの一部を特定のXPathまたはCSS式で選択します.
XPath
Expression
Alias
nodename
現在のノードの下にあるすべてのサブノードを選択
/
絶対パス
//
ドキュメント内のすべてのノード
.
現在のノード
..
親ノード
@
属性の選択
見覚えがあるのではないでしょうか.コマンドライン操作と似ています
Expression
Alias
div
divの下のすべてのサブノード
/div
divルートノード
div/table
divサブエレメント内のすべてのtableノード
//img
すべてのimgノード
div//img
div子孫要素のすべてのtableノード
//@src
srcという名前のすべてのプロパティ
述部特定のノードまたは指定した値を含むノードを検索します.
Expression
Alias
//img[@alt="1"]
alt値が1のノードにおけるsrc属性の値
//a/img[1]
a中性子元素の最初のimg元素
//a/img[last()]
a中性子元素の最後のimg元素
Expression
Alias
//img[@alt="1"]/@src
alt値が1のノードにおけるsrc属性の値
/div/@class
divルートノードのclassプロパティの値
//a/div/text()
divノードのhello,world
偉大なchromeはXPathを直接コピーする機能を提供しており、開発者ツールで右クリックノードが
セレクタ
括弧の中の最初の を加えることを強く推奨する.
Scrapy抽出データには独自のメカニズムがあります.これらはセレクタ(seletors)と呼ばれ、HTMLファイルの一部を特定のXPathまたはCSS式で選択します.
XPath
XPathはXMLドキュメントで情報を検索する言語で、CSSはHTMLドキュメントをスタイル化する言語で、本文は主にXPathを紹介する.
1つの画像を例に挙げます.
ノード
XPathには、要素、属性、テキスト、ネーミングスペース、処理命令、注釈、ルートノードの7種類のノードがあります.XMLドキュメントはノードツリーとして扱われる.ツリーのルートはルートノードと呼ばれます.
上記の例では、
XPathには、要素、属性、テキスト、ネーミングスペース、処理命令、注釈、ルートノードの7種類のノードがあります.XMLドキュメントはノードツリーとして扱われる.ツリーのルートはルートノードと呼ばれます.
上記の例では、
div
:ルートノードtable
:要素ノードhref
:属性ノードノードの選択
Expression
Alias
nodename
現在のノードの下にあるすべてのサブノードを選択
/
絶対パス
//
ドキュメント内のすべてのノード
.
現在のノード
..
親ノード
@
属性の選択
見覚えがあるのではないでしょうか.コマンドライン操作と似ています
Expression
Alias
div
divの下のすべてのサブノード
/div
divルートノード
div/table
divサブエレメント内のすべてのtableノード
//img
すべてのimgノード
div//img
div子孫要素のすべてのtableノード
//@src
srcという名前のすべてのプロパティ
述語
述部特定のノードまたは指定した値を含むノードを検索します.
Expression
Alias
//img[@alt="1"]
alt値が1のノードにおけるsrc属性の値
//a/img[1]
a中性子元素の最初のimg元素
//a/img[last()]
a中性子元素の最後のimg元素
値の取得
Expression
Alias
//img[@alt="1"]/@src
alt値が1のノードにおけるsrc属性の値
/div/@class
divルートノードのclassプロパティの値
//a/div/text()
divノードのhello,world
近道
偉大なchromeはXPathを直接コピーする機能を提供しており、開発者ツールで右クリックノードが
Copy
->Copy XPath
を選択すると、XPathの絶対パスを得ることができます.セレクタ
ResponseでXPath、CSSクエリーを使用するのは一般的であるため、Scrapyは2つの実用的なショートカットを提供しています:response.xpath()
およびresponse.css()
:
ひょうじゅんセレクタ
# alt 1 img
response.xpath('//img[@alt="1"]')
xpath()
およびcss()
は、新しいセレクタのリストであるSelectorList
クラスのインスタンスを返し、SelectorList
クラスは、list
クラスを内蔵するサブクラスであり、いくつかの追加の方法を提供する.
Method
Alias
xpath(query)
結果は単一化されたSelectorList
css(query)
結果は単一化されたSelectorList
extract()
実際の原文データを抽出し、単一化されたunicode文字列リストにします.
re()
正規表現でデータを抽出し、単一化されたunicode文字列のリストになります.
nonzero()
リストが空でない場合はTrueを返します.そうでない場合はFalseを返します.
ネストセレクタ
# src , src doubanio img
response.xpath('//img[contains(@src, "doubanio")]')
正規のセレクタ
Selectorには.re()
の方法があり、例えばScrapy学習ノート01-初視では、正規表現によってデータを抽出するために使用することができる.# “12345 ” 12345
item['commentsNum'] = sel.xpath('div[2]/div[2]/div/span[4]/text()').re(r'[\d]+')[0]
# alt 1 img
response.xpath('//img[@alt="1"]')
# src , src doubanio img
response.xpath('//img[contains(@src, "doubanio")]')
# “12345 ” 12345
item['commentsNum'] = sel.xpath('div[2]/div[2]/div/span[4]/text()').re(r'[\d]+')[0]
r
は文字列が非変換の元の文字列であることを表し、変換文字の有無にかかわらず