好吧,我已经在我的冒险中使用了 mechanize、requests、beautiful soup 甚至 selenium 来做这样的事情,我得出的结论是 urllib 和其他默认模块是最好的方法。唯一的问题是我根本不知道如何使用它。那么有人可以告诉我一些专门了解这一点的好地方吗?另外,我通过示例学习得最好,所以如果有人能将其转换为我所要求的内容,那就太好了(还包括一个提交按钮,哈哈)
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.jonessoda.com/contests/back2school")
element = driver.find_element_by_name("fname")
element.send_keys("Ben")
你确实想要硒。它模拟浏览器上的 GUI 交互。
在执行诸如输入竞赛表格数据之类的操作时,这将是最不易察觉的方式。
关于 selenium 的注释:它不是特定于语言的库。每种语言都有特定于客户端的绑定。您将看到的大多数示例和操作方法实际上都是用 Java 编写的。
一个好的资源是硒蟒蛇
这是您的工作示例。包括提交按钮。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
i = 2 # do it 2 times
while i > 0:
driver = webdriver.Firefox()
driver.get("http://www.jonessoda.com/contests/back2school")
def find_by_xpath(locator):
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, locator))
)
return element
class FormPage(object):
def fill_form(self, data):
find_by_xpath('//input[@name = "fname"]').send_keys(data['fname'])
find_by_xpath('//input[@name = "lname"]').send_keys(data['lname'])
find_by_xpath('//input[@name = "email"]').send_keys(data['email'])
find_by_xpath('//select[@name = "birthday_month"]').send_keys(data['month'])
find_by_xpath('//select[@name = "birthday_day"]').send_keys(data['day'])
find_by_xpath('//select[@name = "birthday_year"]').send_keys(data['year'])
return self # makes it so you can call .submit() after calling this function
def submit(self):
find_by_xpath('//input[@value = "Submit"]').click()
data = {
'fname': 'Sheep',
'lname': 'Test',
'email': '[email protected]',
'month': 'October',
'day': '29',
'year': '1920'
}
FormPage().fill_form(data).submit()
driver.quit() # closes the webbrowser
i = i - 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)