3

私はウェブページを持っています: http://kff.org/womens-health-policy/state-indicator/ultrasound-requirements/# このウェブページからテーブルを抽出する必要があります.

問題が発生しました: 私は BeautifulSoup を使用しており、URL コンテンツを取得するための要求を行っています。これらの方法の問題は、テーブルが生成される前でも Web コンテンツを取得できることです。

だから私は空のテーブルを取得します < table> < thead> < /thead> < tbody> < /tbody> < /table>

私のアプローチ: webbrowser.open_new_tab(url) を使用してブラウザーで URL を開こうとしています。次に、ブラウザーから直接コンテンツを取得します。これにより、サーバーがテーブルを更新できるようになり、ページからコンテンツを取得できるようになります。

問題: Web ブラウザから直接情報を取得する方法がわかりません。

現在、Windows システムで Mozilla を使用しています。

最も近いリンクはウェブサイトのリンクを見つけました。ただし、コンテンツではなく、どのサイトが開かれているかを示します

テーブルを urllib2 または beautifulsoup と requests にロードさせる他の方法はありますか? または、読み込まれたコンテンツを Web ページから直接取得する方法はありますか。

ありがとう

4

2 に答える 2

2

テーブルがいっぱいにならないのは、Python が受け取ったページを urllib2 で処理しないためです。そのため、DOM や実行する Javascript などがありません。

ソースを読んだ後、探している情報がhttp://kff.org/datacenter.json?post_id=32781で JSON 形式で見つかるようです。

于 2014-06-19T19:40:15.240 に答える
2

Santiclauseの回答に追加するには、Javaスクリプトが入力されたデータをスクレイピングしたい場合は、それを実行するための何かが必要です。

そのためには、Selenium パッケージと、Firefox や PhantomJS (ヘッドレス) などの Web ドライバーを使用してページに接続し、スクリプトを実行してデータを取得できます。

あなたの場合の例:

from selenium import webdriver
driver = webdriver.Firefox() # You can replace this with other web drivers
driver.get("http://kff.org/womens-health-policy/state-indicator/ultrasound-requirements/#")
source = driver.page_source # Here is your populated data.
driver.quit() # don't forget to quit the driver!

もちろん、ユーザーSanticlauseが言及したように直接jsonにアクセスできる場合は、そうする必要があります。ウェブサイトの要素を調べているときにネットワークタブをチェックすることで見つけることができます。

于 2014-06-20T12:46:46.850 に答える