Python/mechanize select_form() の使用中にエラーが発生しましたか?
-
20-09-2019 - |
質問
Web サイトからデータをスクラップしようとしています。私が書こうとしているスクリプトは、ページのコンテンツを取得する必要があります。
http://www.atpworldtour.com/Rankings/Singles.aspx
ユーザーが追加順位と日付のすべてのオプションを通過することをシミュレートし、「Go」をクリックすることをシミュレートし、データを取得した後、戻る機能を使用する必要があります。
今のところ、追加のスタンディングにこのオプションを選択するだけにしてみました。
<option value="101" >101-200</option>
これをしようとする私の(貧弱な)試みは次のとおりです。
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import re
import urllib2
br = Browser();
br.open("http://www.atpworldtour.com/Rankings/Singles.aspx");
br.select_form(nr=0);
br["r"] = "101";
response = br.submit();
ただし、最初のフォームを選択するはずの select_form(nr=0) では失敗します。
これは Python によって返されるログです。
>>> from mechanize import Browser
>>>
>>> from BeautifulSoup import BeautifulSoup
>>> import re
>>> import urllib2
>>>
>>>
>>>
>>> br = Browser();
>>> br.open("http://www.atpworldtour.com/Rankings/Singles.aspx");
<response_seek_wrapper at 0x311bb48L whose wrapped object = <closeable_response
at 0x311be88L whose fp = <socket._fileobject object at 0x0000000002C94408>>>
>>> br.select_form(nr=0);
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build\bdist.win-amd64\egg\mechanize\_mechanize.py", line 505, in select_
form
File "build\bdist.win-amd64\egg\mechanize\_html.py", line 546, in __getattr__
File "build\bdist.win-amd64\egg\mechanize\_html.py", line 559, in forms
File "build\bdist.win-amd64\egg\mechanize\_html.py", line 228, in forms
mechanize._html.ParseError
mechanize のホームページにはすべての機能の適切な説明が見つかりませんでした。フォームと Mechanize を使用するための適切なチュートリアルを教えてくれる人、またはこの特定の問題について助けてくれる人はいますか?
アンソニー
解決
私はあなたが正しくライブラリを使用していると思いますが、パーサは、その特定のページとのトラブルを抱えているように見えます。私は別のページ(「 http://flashcarddb.com/login の上と同じようにライブラリを使用しています「)と、それはエラーは発生しません。
他のヒント
私もちょうどこれと同じ問題に遭遇しました。私がアクセスしていたページは W3C 検証に合格していたので、マークアップの問題ではないと思いました。ただし、html tiny は、ページ内に が含まれていると不平を言いました。それを修正したら、機械化が動き始めました。
また、メーリング リストでこの問題に対する返信も見ました。Factory=mechanize.RobustFactory() を mechanize.Browser() に追加しても結果は変わらないことに注意してください。
クルー:あなたのmechanize.Browserについての詳細を定義します()