Заполните ввод типа text и нажмите submit с помощью python

У меня есть этот html:

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

Мне нужно написать в текстовом поле, а затем нажать "отправить" с помощью python. Входные теги не находятся внутри форма. Как я мог это сделать?

2 ответов


вам не нужно заполнять поля и "нажимать" отправить. Вы можете смоделировать представление и получить желаемые результаты.

использовать BeautifulSoup и urllib вместе с firebug в Firefox. Следите за сетевым трафиком с firebug и получите параметры post из HTTP-сообщения, которое отправляет Донг. Создайте дикт и 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)

param vals изменится согласно тому, что ты пытаешься представить. Сделайте соответствующее размещение в вашем коде.


вот решение Селена, если вам действительно нужно заполнить поля. Однако обычно это нужно только для целей тестирования.

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()