2017-09-20 19 views
0

このWebページからデータを抽出して.csvに配置する方法を理解しようとしています。ファイル:私はテキストをつかむために、XPath値を知りたいPython - 属性データのXパスを調べる - * HTML内

<tr data-row="12"> 
    <th scope="row" class="right " data-stat="ranker" >11</th> 
     <td class="left " data-stat="player" csk="Bolyard,Robert" >Robert Bolyard</td> 
     <td class="left " data-stat="college_name" csk="University of Toledo" ><a href="/friv/draft.fcgi?college=toledo">University of Toledo</a></td> 
     <td class="right " data-stat="seasons" >12</td> 
</tr> 

https://www.basketball-reference.com/draft/BAA_1947.html

行ごとのテーブル構造は以下の下図のようになります。

# Xpath 
player = data.xpath("//td/span[@data-stat='player']/text()") 
college = data.xpath("//td/span[@data-stat='college_name']/a/text()") 
seasons = data.xpath("//td/span[@data-stat='seasons']/text()") 

問題は、それがいずれかの列に任意の値を返さないです。

は、これまでのところ、私は次のよう持っています。 Xpathステートメントで何が間違っているのでしょうか?

答えて

0

spantdの中にありますが、1つもありません。

あなたはそれが動作するのXPathの一部を削除する場合:

player = data.xpath("//td[@data-stat='player']/text()") 
college = data.xpath("//td[@data-stat='college_name']/a/text()") 
seasons = data.xpath("//td[@data-stat='seasons']/text()") 
+0

ありがとうございます!このコードは意図したとおりに動作します。 [@data - * = value]がtdの後にある理由を尋ねることができますか? – Leggerless

+0

データ属性はtdに属します。したがって、// td [@attr]は、属性 'attr'を持つ孫要素であるtdを見つけることを意味します。 – Bricky

関連する問題