2016-10-07 7 views
2

私は、Webページからプログラムにデータを取得する際に問題が発生した暇な時にプロジェクトをやっています。div-dataを印刷するにはどうすればいいですか?

これは私の現在のコードです:私はそれがこのreactidでWebページ上のすべての値を表示させる、と私はできません

regex = r'<div data-reactid=".3.$squad content.0.$=11:0.0.0.0.1:0.2.0.0">([^<]*)</div>' 

import urllib 
import re 

htmlfile = urllib.urlopen("http://www.superliga.dk/klub/aab?sub=squad") 

htmltext = htmlfile.read() 

regex = r'<div data-reactid=".3.$squad content.0.$=11:0.0.0.0.1:0.2.0.0">([^<]*)</div>' 

pattern = re.compile(regex) 

goal = re.findall(pattern,htmltext) 

print goal 

そして、それはこの部分を除いて大丈夫働いていますこの問題の解決策を見つけることはできません。 Pythonで印刷する方法を教えてください。

+0

実際のhtmlパーサーを試しましたか? –

+0

上記のどのようなクリケット。何らかのパーサーやスクレーパーで100倍簡単になります。例については、[このリンク](http://docs.python-guide.org/ja/latest/scenarios/scrape/)を参照してください。 – Dillanm

答えて

1

あなたのブラウザのデベロッパーコンソールに表示されたタグと一致させようとしています。 残念ながら、あなたが見たhtmlはダイナミックページの「最終形式」だけです。urlopenでダウンロードしたものは、ブラウザから取得されたデータを使用してjavascriptによって動的に他の要素で埋められるWebページのスケルトンですいくつかのバックエンドサーバー。

htmltestに格納されている実際の値を印刷しようとすると、正規表現にマッチさせようとしているようなものが見つからないでしょう。

しようとすることができます(devコンソールを介して)フェッチされたリソースを監視し、API呼び出しをリバースエンジニアリングして、必要な情報を回復することです。これらのAPI呼び出しの応答は、JSON形式であるか、html本文よりも構文解析が容易な可能性があります。

UPDATE

http://ss2.tjekscores.dk/pro-stats/tournaments/46/top-players?sortBy=eventsStats.goals&limit=5&skip=0&positionId=&q=&seasonId=10392&teamId[]=8470

はたぶん、これはあなたが探している情報を返します。たとえば、Chromeの開発ツールで私のような非同期呼び出しを見ることができます。

+0

あなたはフィードバックのためにそれほど多くのことを考えています。私はPythonで新しくなっているので、私は何をしているのか分かりませんが、うまくいきます! :D – MaltheB

+0

私はプログラミングのために現時点では崇高なテキスト3を使用していますが、あなたは何か提案があれば、私は本当にWindows 10のための別のソフトウェアが欲しいです! :) – MaltheB

+0

私たちはOTを手に入れていますので、関連する質問にお答えします:http://stackoverflow.com/a/81609/1029516。それでも、私が火炎戦争を開くことなく個人的な好みを表現することが許されていれば、私は "PyCharm"と "崇高なテキストを過小評価しない"と言うだろう! – Batsu

関連する問題