通过http查询填写表格

时间:2019-01-24 16:39:41

标签: jquery forms http ssl web-scraping

我正在为客户开发一个项目,该项目包括管理公司目录,直到现在他有几个程序可以完成我的所有工作,我正处于用他以前管理的信息填充cms的阶段而且我需要从以前的程序中提取它,问题是程序的提供者没有授予客户端访问权限,这样我就可以获得信息(他们告诉他,他不付款,他可以无法获取信息),我尝试通过网络抓取来实现,但是在进行查询时,返回的信息始终相同,即程序的登录页面。

我的问题是:

  • 如果通过查询我可以填写登录表单(因为客户端具有其用户名和密码),并且可以通过某种方式保存会话并因此可以通过网络抓取或其他方式提取信息
  • 或在每个查询中附加用户和邮件身份验证
  • 其他任何想法

这些是我要从列表或详细URL中提取信息的URL:

http://salamantica.com/cms/categories http://salamantica.com/cms/categories/view/1

这是我进行网页抓取时总是返回的那个:

http://salamantica.com/cms/login

我需要帮助,因为如果客户必须手动填写信息,他可能会死于尝试。

有什么想法吗?

谢谢。

解决了!!!

有效的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

option = webdriver.ChromeOptions()
option.add_argument(" - incognito")

browser = webdriver.Chrome(executable_path='/path', chrome_options=option)
browser.get('http://salamantica.com/cms/login')

timeout = 5

WebDriverWait(browser, timeout)

browser.find_element_by_id("UserUsername").send_keys("user")
browser.find_element_by_id("UserPassword").send_keys("password")
browser.find_element_by_css_selector('button[type="submit"]').click()

WebDriverWait(browser, timeout)

browser.get('http://salamantica.com/cms/categories/view/1')

WebDriverWait(browser, timeout)
information = browser.find_elements_by_class_name('controls')
[ print(content.text) for content in information ]

1 个答案:

答案 0 :(得分:0)

Selenium可以输入用户名,密码,然后单击提交。

您要做的事情,我无能为力,因为我不知道页面的样子:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://salamantica.com/cms/login')
driver.find_element_by_id("UserUsername").send_keys("user1234")
driver.find_element_by_id("UserPassword").send_keys("password")


driver.find_element_by_css_selector('button[type="submit"]').click()