XPath式は、スクラップしようとしているHTMLページが大きく壊れているため、何も一致しません。 FF(または他のウェブブラウザ)は、ページを表示する前にそのページを修正します。これにより、元の文書には存在しないHTMLタグが追加されます。
次のコードにはXPath式が含まれていますが、正しい方向を指している可能性があります。
import requests
from lxml import html, etree
sample_page = requests.get("https://www.racenet.com.au/horse-racing-results/happy-valley/2016-11-16")
tree = html.fromstring(sample_page.content)
nodes = tree.xpath("//*[@id='resultsListContainer']/div/table[@class='tblLatestHorseResults']/tr[@class='raceDetails']/td/span[1]")
for node in nodes:
print etree.tostring(node)
実行すると、これは次のように出力されます
$ python test.py
<span class="bold">Class 5</span> Track:
<span class="bold">Class 4</span> Track:
<span class="bold">Class 4</span> Track:
<span class="bold">Class 4</span> Track:
<span class="bold">Class 4</span> Track:
<span class="bold">Class 3</span> Track:
<span class="bold">Class 2</span> Track:
<span class="bold">Class 3</span> Track:
ヒント:Webページをこすりしようとしている、そして物事がちょうどにHTMLを予想通り、仕事ダウンロードして保存していない時はいつでもファイル。この場合、例:
f = open("test.xml", 'w')
f.write(sample_page.content)
次に、保存されたHTMLを見てください。これにより、DOMの外観を知ることができます。
// * [ID @ = "resultsListContainer"]/DIV [3] /テーブル// TR [1]/TD /スパン[1] /テキスト() – spinkus
はまだFirebugのを使用して何も – McLeodx
検証を取得して何もないことを証明あなたのXPath式に間違っている、何か他のものでなければなりません。 – Bouke