2017-02-25 19 views
0

私はlxmlライブラリを使用してPythonでWebをスクレイピングしています。そして、野球のサイトhttp://mlb.mlb.com/mlb/standings/exhibition.jsp?ymd=20161002からいくつかのデータを削り取ろうとしています。 何らかの理由で、私のコードは、前に印刷したものの後に空のリストを表示します。この問題に関するどんな助けも素晴らしいでしょう!Web Scraping​​タグの問題 - Lxmlを使用したPython 3

from lxml import html 
import requests 

page = requests.get('http://mlb.mlb.com/mlb/standings/exhibition.jsp?ymd=20161002') 
tree = html.fromstring(page.content) 
#This will create a list of buyers: 
##buyers = tree.xpath('//div[@title="buyer-name"]/text()') 
#This will create a list of prices 
prices = tree.xpath('//td[@class="tg_w"]/text()') 

print("Wins: ", prices) 
print() 
##print("Buyers: ", buyers) 
+1

私の推測では、テーブル要素(td)が含まれていないページがjavascript/ajaxによってロードされているので、mlb.mlb.comのAPIを探すかもし​​れません – suhain

答えて

0

HTML!= XML。いくつかのhtml5タグはおそらくXMLパーサーを混乱させるでしょう。

に設定されたパーサーでBeautifulSoupを試してください。

+0

'lxml .html'は実際にはHTMLパーサーです:http://lxml.de/lxmlhtml.html。また、XMLパーサで不正なXMLを解析すると、空の結果ではなくエラーが返されます。 –

+0

@MathiasMüllerこれは本当です。パーサはhtml5を正常に解析していますが、 '
'や ''のようなselfclosingタグは構造を壊します。 bs4パーサーを 'lxml'に設定して、結果をきれいに印刷すると、正確に表示されます。 –

+0

いいえ、自己閉じタグは構造に縛られず、XMLではなく、自己閉じ(または非閉じ)要素タグはここでは問題になりません。問題に説明されている問題についての説明は、a)要素がJavascriptによって生成されているか、またはb)ターゲット要素が名前空間にあることです。 –

関連する問題