0

mechanize を使用して YouTube の URL をフォームに入力する大きなプログラムの小さな部分を書いていますが、動作させることができません

ページで最初のフォームを使用していますが、IDだけのフォームの名前がないため、属性ボックスnr=0に何を入力すればよいかわかりませんbr[]

これが私のコードです:

import mechanize

url = "Youtube to Mp3 URL"
br = mechanize.Browser()
br.set_handle_robots(False)
br.open(url)
br.select_form(nr=0)
br[?] = "Youtube Video URL" #What goes in the []?
res = br.submit()
content = res.read()
print content

ばかげた質問だと確信していますが、他の質問はどれも私を助けていません

ありがとう!

4

1 に答える 1

1

私は以下をテストし、動作します:

br.select_form(nr=0)
for field_name in br.form.controls:
    print field_name

これにより、入力する必要があるフィールドの名前の手がかりが得られます。次のように括弧で囲まれています。

<HiddenControl(submit_hidden=submit_hidden) (readonly)>
<TextControl(user_name=)>
<PasswordControl(user_password=)>
<SubmitControl(submit=Login) (readonly)>

この場合、フィールドはus ​​er_nameuser_password です

これは私にとってはうまくいきましたが、ダウンロードリンクは Javascript で提供され、mechanize はそれをサポートしていないことをお伝えしました。Ruby用の WATIR のようなものが必要になります。

   browser.select_form(nr=0)

   for field in browser.form.controls:
       field._value = "http://www.youtube.com/watch?v=ARz8ddGIZIA"
       break

   browser.submit()
   response = browser.response().read()
于 2013-05-16T00:35:10.730 に答える