1

私はセレンとスクレイパーウィキが大好きですが、どういうわけかそれらをうまく連携させることができません。私は、scraperwiki でセレンを使用して 2 つの方法で Web サイトを開こうとしました。どちらの方法もチュートリアルから入手しました。

import selenium
sel = selenium.selenium("localhost",4444,"*firefox", "http://www.google.com")   
sel.open("http://google.com")

これは動作しません。次のエラーが表示されます。

error: [Errno 111] Connection refused 

そして、これもしません:

from selenium import webdriver 
browser = webdriver.Firefox()

別のエラーが発生します:

/usr/lib/python2.7/subprocess.py:672 -- __init__((self=<subprocess.Popen object at 0x1d14410>, args=[None, '-silent'], bufsize=0, executable=None, stdin=None, stdout=-1, stderr=-1, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0))
AttributeError: 'NoneType' object has no attribute 'rfind'

誰かがこれの論理的な理由を見ていますか?

スクレイパーウィキのドキュメントは、セレンが「Seleniumサーバーを持っている場合にのみScraperWikiで役立つ」ことを示しています。これが何を意味するのか正確にはわかりませんが、それが問題の原因である可能性があると考えています。どんな助けでも大歓迎です。

4

1 に答える 1

1

Selenium は、使用している Python ライブラリだけではありません。コードに代わってブラウザーと対話する、質問で言及されている別のソフトウェア、Selenium サーバーもあります。

このコード行

sel = selenium.selenium("localhost",4444,"*firefox", "http://www.google.com")  

コードが要求するようにブラウザー (Firefox) にコマンドを送信できるように、Selenium サーバーに接続しようとしています。スクリプトのコンテキストでの「localhost」は、Selenium サーバーを実行していない ScraperWiki のサーバーの 1 つです。

あなたがする必要があるのは、 http://selenium.googlecode.com/files/selenium-server-standalone-2.28.0.jarをダウンロードして別のサーバーにインストールし、

java -jar selenium-server-standalone-2.28.0.jar

次に、コードを実行しているサーバーを指すようにコードを変更できます。ScraperWiki はインターネットに接続できるポートを制限しているため、さらに複雑になります。そのため、ポート 4444 を使用する代わりに、別のポート (おそらくポート 80) を使用する必要があるかもしれません。

結局のところ、それはおそらく実行可能な解決策ではないと思います。スクレーパーをPython、PHP、またはRubyで書くだけの方がよいかもしれません。

于 2013-01-18T14:56:12.973 に答える