Xpath-テキスト値を保持するテーブルを持つ複数のネストされたdiv

Alex16237

テキスト情報を抽出したいウェブサイトで複雑なhtml構造に遭遇しました。

ウェブサイトの構造は次のとおりです。

<ul class = "listing_pages">
    <li id = "list_1" style = ""></li>
    <li id = "list_2" style = ""></li>
    <li id = "list_3" style = ""></li>
    <li id = "list_4" style = ""></li>
    <li id = "list_5" style = ""></li>
    <li id = "list_6" style = ""></li>
    <li id = "list_7" style = ""></li>
    <li id = "list_8" style = ""></li>
    <li id = "list_9" style = ""></li>
</ul>

それぞれがid="list_*"展開します

<li id="list_1">
<div class="description_block">
<table valign="top">
<tbody>
<tr valign="top">
<td width="400px">
<table>
<tbody>
<tr>
<td style="width:350px">
<div></div>
<table></table>
<table cellspacing="0">
<tbody>
<tr>
<td height="15px">
<h2>
<a class="product_title" title="PRODUCT_NAME" href="http://example.com">PRODUCT_NAME</a>

その悪夢のような構造!そして、それはeatchのために繰り返されましたlist_*

以下の相対Xpathは

/div[9]/div[2]/div[3]/div[2]/form/div/div[2]/ul/li[1]/div[2]/table/tbody/tr/td[1]/table/tbody/tr/td/table[2]/tbody/tr/td/h2/a

どちらが失敗します。

私が試したいくつかのことは、限られた成功でしたが、

response.xpath('//*[@id="one"]//table//tr//h2//a[position()]//text()').extract()

これ/h2/aは、単一からではなく、ページからすべて抽出しますlist_*

response.xpath('//*[@id="list_1"]//table//tr//h2//a//text()').extract()

これにより、テキストが正しく抽出されますが、最初のlist_1divからのみ抽出されますでインクリメントすることはできますextract()[++i]が、それは最適な解決策ではなく、間違いなくより良い方法があると思います。

私が達成したいのは:

各list_ *からテキスト(PRODUCT_NAME)を順番に抽出します。

vezunchik

たぶん次のcssようなセレクターを試してみてくださいresponse.css('li[id*="list_"] a.product_title::text').extract()またはxpath response.xpath('//li[contains(@id, "list_")]//a[contains(@class, "product_title")]/text()')

UPD:反復の場合:

for item in response.css('li[id*="list_"]'):
    print item.css('a.product_title::text').get()

または

for item in response.xpath('//li[contains(@id, "list_")]'):
    print item.xpath('.//a[contains(@class, "product_title")]/text()').get()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

XPathでネストされたテーブルのtdテキスト値を取得する方法

分類Dev

内部にスパンを持つ複数のdivからテキストを取得する-XPath

分類Dev

複数の子孫に分割されたテキストを検索するXPath

分類Dev

Xpathによって検出されたテーブル要素のリストには、getText()メソッドを介して受信できる正しいテキスト値を持つ表示可能な10個の要素のみが含まれています。

分類Dev

(リバース)特定のテキスト値を持つDIVにアクセスするためのトラバースXPathクエリ

分類Dev

XPath:任意の数のネストされた要素内のテキストを照合する方法は?

分類Dev

Xpathを使用して、複数の空の兄弟タグを持つテキストを選択する

分類Dev

xpathを使用してネストされたdivからテキストを抽出する

分類Dev

複数のテキスト要素を持つcontains()のXPathクエリ

分類Dev

異なるクラスとIDを持つ複数のタグへのxpath>出力:テキスト

分類Dev

複数の部分的に類似したリンクテキストを持つHTMLからxpathを介して要素を識別する方法は?

分類Dev

Selenium:xpathを使用して、特定のプレーンテキストでネストされたdivを検索します

分類Dev

xpathを使用してhtmlスクリプトの複数のラベルのテキストを抽出する方法

分類Dev

リストで指定された子値を持つ要素を選択するためのxpath

分類Dev

rvest:xpathは、サブノードが削除された現在のノードでテキストを取得します

分類Dev

XPathを使用して要素をテキストに保持する

分類Dev

Xpathは特定のテキストを持つ子のないdivを見つけます

分類Dev

xpathとscrapyが複数の属性を持つ段落にテキストを取得しない

分類Dev

HTML XPath:複数のレベルの複雑なタグが混在するテキストを抽出しますか?

分類Dev

Xpath-複数の属性をテストする方法は?

分類Dev

テキストノードを含む要素を見つけるためのXPath?

分類Dev

2つの数値を比較するxpathクエリ条件付きテスト

分類Dev

テキストのないアンカーを見つけるためのXPath?

分類Dev

Xpath - 部分的なテキストで複数の属性を使用した複合文

分類Dev

XPathを使用してテーブル内のすべてのテキストノードを選択する

分類Dev

要素の内部テキストを選択するためのXpath

分類Dev

HTML内のテキストを識別するためのXPath

分類Dev

Xpath。指定したタグのテキストをページに表示されている順に取得します

分類Dev

ネストされた要素内のxpathを制限する

Related 関連記事

  1. 1

    XPathでネストされたテーブルのtdテキスト値を取得する方法

  2. 2

    内部にスパンを持つ複数のdivからテキストを取得する-XPath

  3. 3

    複数の子孫に分割されたテキストを検索するXPath

  4. 4

    Xpathによって検出されたテーブル要素のリストには、getText()メソッドを介して受信できる正しいテキスト値を持つ表示可能な10個の要素のみが含まれています。

  5. 5

    (リバース)特定のテキスト値を持つDIVにアクセスするためのトラバースXPathクエリ

  6. 6

    XPath:任意の数のネストされた要素内のテキストを照合する方法は?

  7. 7

    Xpathを使用して、複数の空の兄弟タグを持つテキストを選択する

  8. 8

    xpathを使用してネストされたdivからテキストを抽出する

  9. 9

    複数のテキスト要素を持つcontains()のXPathクエリ

  10. 10

    異なるクラスとIDを持つ複数のタグへのxpath>出力:テキスト

  11. 11

    複数の部分的に類似したリンクテキストを持つHTMLからxpathを介して要素を識別する方法は?

  12. 12

    Selenium:xpathを使用して、特定のプレーンテキストでネストされたdivを検索します

  13. 13

    xpathを使用してhtmlスクリプトの複数のラベルのテキストを抽出する方法

  14. 14

    リストで指定された子値を持つ要素を選択するためのxpath

  15. 15

    rvest:xpathは、サブノードが削除された現在のノードでテキストを取得します

  16. 16

    XPathを使用して要素をテキストに保持する

  17. 17

    Xpathは特定のテキストを持つ子のないdivを見つけます

  18. 18

    xpathとscrapyが複数の属性を持つ段落にテキストを取得しない

  19. 19

    HTML XPath:複数のレベルの複雑なタグが混在するテキストを抽出しますか?

  20. 20

    Xpath-複数の属性をテストする方法は?

  21. 21

    テキストノードを含む要素を見つけるためのXPath?

  22. 22

    2つの数値を比較するxpathクエリ条件付きテスト

  23. 23

    テキストのないアンカーを見つけるためのXPath?

  24. 24

    Xpath - 部分的なテキストで複数の属性を使用した複合文

  25. 25

    XPathを使用してテーブル内のすべてのテキストノードを選択する

  26. 26

    要素の内部テキストを選択するためのXpath

  27. 27

    HTML内のテキストを識別するためのXPath

  28. 28

    Xpath。指定したタグのテキストをページに表示されている順に取得します

  29. 29

    ネストされた要素内のxpathを制限する

ホットタグ

アーカイブ