通过Python中的网络抓取工具登录网站

Kir*_*ran 7 python selenium urllib2 beautifulsoup web-scraping

我在Python中使用Selenium webdriver进行网络抓取项目.

我想通过输入登录详细信息登录,然后单击"提交"按钮.

我可以输入用户名和密码.但我无法鼠标点击提交按钮.

"提交"按钮属于类型<input>.

<input type="image" src="/images/buttons/loginnow.gif" tabindex="3">
Run Code Online (Sandbox Code Playgroud)

这是我试图点击鼠标的python代码.

submitButton=driver.find_element_by_xpath("//input[@type='image'][@src='/images/buttons/loginnow.gif']")
driver.click(submitButton)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

AttributeError:'WebDriver'对象没有属性'click'

任何想法如何修复它或任何其他替代解决方案登录到Python网站.

谢谢

Ble*_*der 9

我好运使用mechanize.它非常简单易用.

这是我制作的脚本的简化版本:

from BeautifulSoup import BeautifulSoup
from tidylib import tidy_document

import mechanize
import cookielib

if __name__ == '__main__':
  browser = mechanize.Browser()

  cookiejar = cookielib.LWPCookieJar()
  browser.set_cookiejar(cookiejar)

  browser.set_handle_equiv(True)
  browser.set_handle_redirect(True)
  browser.set_handle_referer(True)
  browser.set_handle_robots(False)

  browser.open('https://www.example.com/')

  browser.select_form(name = 'loginform')
  browser['username'] = 'foo'
  browser['password'] = 'bar'

  browser.submit()

  browser.open(browser.click_link(text = 'Link text'))

  soup = BeautifulSoup(tidy_document(browser.response().read())[0])
Run Code Online (Sandbox Code Playgroud)

你真的不需要点击图像.您只需填写所有适当的表单详细信息即可submit().

此外,如果你不解析任何东西,只需摆脱BeautifulSouptidylib依赖.


Aco*_*orn 5

您需要调用元素的单击函数,而不是驱动程序。

submitButton=driver.find_element_by_xpath("//input[@type='image'][@src='/images/buttons/loginnow.gif']")
submitButton.click()
Run Code Online (Sandbox Code Playgroud)