2013-08-07 2 views
5

私はCS勉強をしようとしているWeb掻爬とすべてのやりとりと一緒に来ていないです。 iMacrosと他のデータを使って「ツール」を掻き集めた後、私はPythonに目を向ける。その言語は当時よく知られていなかった。私はBeautifulSoupとurllib2について学び、stackoverflowや他のいくつかのフォーラムを通してそれを学ぶことで自分のやり方を駄目にしました。データ、ヘッドレスブラウザ、およびPythonを削るの

これまでに得られた知識を使用して、ほとんどの静的なWebページをスクラップできます。しかし、静的ページの時代は終わっていると私たちは皆、知っています。

私は誰かがここで正しい方向に私を導いて欲しいです。私はJavascriptを搭載したWebページをロードし、すべてのコンテンツをロードし、このデータを何らかの形でBeautifulSoup関数に取り込む方法を学びたいと考えています。 Urllib2はそれを吸う。フォームを入力してボタンのクリックをナビゲートする機能も好きです。

ほとんどの場合、興味のあるウェブサイトは、スクロールしながら読み込まれる結果の長いリストで構成されています。それらをすべて読み込んで、ページをダウンロードしても、それは役に立たないようです(なぜそうは分かりません)。私はWindows 7を使用しており、Python 2.7.5をインストールしています。

私は、ゾンビやゴーストのようなヘッドレスブラウザが私を助けてくれると言われてきましたが、私は本当にそれらについてよく知りません。私は機械化のようなライブラリを使ってみましたが、必要なもの、つまり結果をロードしたり、ウェブページを取得したり、BS4にフィードしたりすることはありません。

Pythonについての私の最小限の知識を念頭に置いて、誰でもここで私を助けることができますか?

おかげphantomjs

+0

JavaScriptはおそらく、いくつかの外部JSON/XML/PHPサーバーからリソースを取得しています。 FirebugまたはChromeデベロッパーツールを使用して、そのソースを見つけてそこからスクレイプします。 –

+0

あなたはそれについて正しいと思いますが、ヘッドレスブラウザやそのようなものを使用して、問題の一般的な解決策をもっと期待しています –

+0

私はそれについて知らない、残念です:( –

答えて

9

Selenium WebdriverはJavaScriptドリブンWebページのヘッドレス自動化されたブラウジングを行うことができます。一度インストール、それはこのように使用することができます:Ubuntuで

import contextlib 
import selenium.webdriver as webdriver 
import bs4 as bs 

# define path to the phantomjs binary 
phantomjs = 'phantomjs' 
url = ... 
with contextlib.closing(webdriver.PhantomJS(phantomjs)) as driver: 
    driver.get(url) 
    content = driver.page_source 
    soup = bs.BeautifulSoup(content) 

、彼らは

  • sudo pip install -U selenium
  • Download and unpack phantomjs
  • リンクまたはにphantomjsのバイナリを移動してインストールすることができますあなたのPATHのディレクトリ

    % cd phantomjs-1.9.0-linux-i686/bin/ 
    % ln phantomjs ~/bin 
    
+1

PhantomJSがPythonのサポートを中止したと私は信じていました:http://phantomjs.org/release-1.5 .html –

+0

@HamzaTahir、phantomjs自体がPythonバインディングを廃止しましたが、Ghostdriver https://github.com/detro/ghostdriverというプロジェクトが存在し、これはSeleniumにブラウザとしてPhantomJSを使用するためのWebdriverを提供します。 PhantomJSを制御するウェブドライバを制御するSeleniumを制御します.Ghostdriverはその後、Seleniumの上流に統合されました。 – dilbert

+0

@dilbertなので、easy_installやpipを使ってSeleniumを入手し、PhantomJSブラウザをダウンロードする必要があります。上記のコードは動作しますか? –

関連する問題