2017-02-05 4 views
0

python 3.5とrobobrowserを使用して入力値を入力した後にWebページをスクラップしようとしています。私が直面している問題は、入力時に各値を一度に入力しようとしているときです。私のPythonコードのpython 3.5 robobrowser、一度に1つの値で入力を入力してください

<select name="ctl00$ContentPlaceHolder1$DDLDistrict" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$DDLDistrict\',\'\')', 0)" id="ctl00_ContentPlaceHolder1_DDLDistrict"> 
    <option value="Select District">Select District</option> 
    <option selected="selected" value="8">Agra</option> 
    <option value="9">A</option> 
    <option value="29">B</option> 
    <option value="70">C Nagar</option> 
    <option value="72">D</option> 
    <option value="58">Y</option> 
    <option value="40">Z</option> 
</select> 

一部は次のとおりです。

import re 
from robobrowser import RoboBrowser 

# Browse to Genius 
browser = RoboBrowser(history=True) 
browser.open('http://164.100.180.82/ceouptemp/RollPDF.aspx') 
from bs4 import BeautifulSoup 
form = browser.get_form(name='ctl00$ContentPlaceHolder1$DDLDistrict') 
+0

を、どこで、コードの残りの部分がある - コードのより重要な部分? – furas

答えて

1

ただ、ダブルチェックに、あなたが実際にフォームを見つけたことを確認しますが、フォームを印刷します。以下のコードでは、あなたが上に掲示したコードと対話する対話的なPythonセッションがあることを前提としています。

>>> print(form) 

あなたには、いくつかで始まる値、<RoboForm __を取得する場合は、ビジネスにしています。あなたがNoneを取得した場合は、実際にフォームを選択していないと、あなたは、フォームがどこにあるか把握するために、以下を試してみてください、

>>> browser.get_forms() 

あなたはそれを変数名を割り当てられた選択リストが含まれてフォームを見つけたら(次のような「29」など)form、あなたはいくつかの値にフォームの値を変更することができます。

>>> form['ctl00$ContentPlaceHolder1$DDLDistrict'].value = '29' 

あなたはすべてのオプションのリストが必要な場合は、あなたが行うことができます:

>>> form['ctl00$ContentPlaceHolder1$DDLDistrict'].options 

ハッピースクラップ!

詳細についてはRoboBrowserドキュメント(単に選択するように動作しますチェックボックスに例を注意してください)チェックアウト:https://github.com/jmcarp/robobrowser

関連する問題