2016-05-04 10 views
1

ブラウザでページソースを表示すると、そこにhtmlが表示されます。しかし、私がpythonリクエストを使ってリクエストを行うと、htmlは表示されません。Pythonリクエストとbeautifulsoup4を使用したレスポンスでhtmlが見つかりません

私が掻き取ろうとしているURLはhttp://dota2lounge.com/match?m=13362で、そのページの後ろにある特定のhtmlです。

<div class="full"> 
    <a class="button" onclick="ChoseEvent(13362,'Whole Match',false)">Match</a> 
    <a class="button" onclick="ChoseEvent(13392,'1st Game','1462327200')">1st Game</a> 
    <a class="button" onclick="ChoseEvent(13424,'2nd Game','1462327200')">2nd Game</a> 
    <br><div id="toma" class="full" style="background: #444;line-height: 2.5rem;border: 1px solid #333;text-align: center;">Whole Match</div> 
</div> 

ボタンの 'onclick'値を取得したいと思います。これまで私は試しました:

r = requests.get('http://dota2lounge.com/match?m=13268') 
soup = bs(r.content, 'lxml') 
buttons = soup.find_all('a', class_='button') 

これは動作しません。

r.content 

は、いずれかのHTMLを表示するためには表示されません。

+0

「 '' soup.find_all( 'a'、 'button') '' 'を試してください。 '' 'soup.find_all( 'a'、class = 'button')' '' –

答えて

0

この

soup = BeautifulSoup(r.text, "html.parser") 
for link in soup.findAll('a'): 
     print link.get('onclick') 
+0

ありがとうございますが、私はあなたの提案されたパーサを試してみましたが、うまくいかなかったのです。私がRequestレスポンスからテキストを調べると、そこにはまだHTMLが見えません。私のブラウザではレンダリングされる理由はありますか?しかし、Pythonの要求ではレンダリングされない理由はありますか? – Peter

+0

私はあなたのHTMLセクションをソースコードで見つけられず、このコードをhttp://dota2lounge.com/match?m=13362 url上で試してみました。そこに2つのonclick selectTeam($(this)、 'a')関数があります。 – Suraj

0

を試してみてくださいあなたはpythonでリクエストを作るとき、あなたがしたい要素のように実行されていませんジャバスクリプトによって追加されて見えます。 this questionをチェックしてください。ちょうど含む.htmファイルを作成し、最速のオプションは、しばしばありますが、一度だけこれをこするしている場合

は(つまり、あなただけのデータが欲しい、あなたはあなたのためのゲームをプレイするためにボットを構築しようとしていません)すべてのページにリンクするだけです(各リンクを<a>タグに入れれば、テキストは必要ありません)。その後、firefoxでdownthemallのようなツールを使用して、適切な書式で各ページのローカルコピーを保存することができます。

関連する問題