15

私はこのhtmlを持っています:

<input type="text" class="txtSearch">
<input type="submit" value="Search" class="sbtSearch">

必要なのは、テキスト フィールドに書き込み、python を使用して送信をクリックすることです。入力タグはForm内にありません。どうすればそれができますか?

4

3 に答える 3

17

実際にフィールドに入力して「クリック」して送信する必要はありません。送信をシミュレートして、目的の結果を得ることができます。

Firefox で firebug と一緒にBeautifulSoupと urllibを使用します。firebug でネットワーク トラフィックを監視し、submit が実行している HTTP POST から post パラメータを取得します。dict を作成し、それを URL エンコードします。URL リクエストと一緒に渡します。

例えば:

from BeautifulSoup import BeautifulSoup
import urllib

post_params = {
    param1 : val1,
    param2 : val2,
    param3 : val3
        }
post_args = urllib.urlencode(post_params)

url = 'http://www.website.com/'
fp = urllib.urlopen(url, post_args)
soup = BeautifulSoup(fp)

パラメータvalsは、送信しようとしているものに応じて変化します。コードに適切な調整を加えます。

于 2012-10-31T20:56:06.190 に答える
11

実際にフィールドにデータを入力する必要がある場合は、セレンのソリューションを次に示します。ただし、通常、これはテスト目的でのみ必要です。

from selenium import webdriver

webpage = r"https://www.yourwebsite.com/" # edit me
searchterm = "Hurricane Sandy" # edit me

driver = webdriver.Chrome()
driver.get(webpage)

sbox = driver.find_element_by_class_name("txtSearch")
sbox.send_keys(searchterm)

submit = driver.find_element_by_class_name("sbtSearch")
submit.click()
于 2012-10-31T21:04:12.707 に答える