Ghost.py 返回表单列表

Posted

技术标签:

【中文标题】Ghost.py 返回表单列表【英文标题】:Ghost.py return list of forms 【发布时间】:2013-05-22 00:24:34 【问题描述】:

我刚刚安装了Ghost.py,以便抓取一些需要我拥有 javascript 的网站。有没有办法在当前页面上获得一个可迭代的表单列表,就像使用 mechanize.Browser().forms() 的机械化模块一样?或者,如果没有,我可以将页面(在所有 javascript 内容加载后)传递到 mechanize 库并让它填写/提交表单吗?

【问题讨论】:

***.com/questions/15513699/… 【参考方案1】:

如果您不介意在屏幕上弹出浏览器,Selenium 可以为您做到这一点。它也可以无头运行,但这更棘手。一个简单的解决方案:

from selenium import webdriver

driver = webdriver.Firefox()

url = "http://www.w3schools.com/html/html_forms.asp"
driver.get(url)
# get a list of the page's forms as Selenium WebElements
# (webdriver API ref: http://selenium-python.readthedocs.org/en/latest/api.html)
forms = driver.find_elements_by_xpath(".//form")
for i, form in enumerate(forms):
    print i, form.text

# the last form, index number 5, has input tags of type "text" and "submit" 
"""
<form name="input0" target="_blank" action="html_form_action.asp" method="get">
"
Username: "
<input type="text" name="user" size="20">
<input type="submit" value="Submit">
</form>
"""

# get the input WebElements from this form WebElement
inputs = forms[5].find_elements_by_xpath(".//input")
# write text to the text input, then submit the form
inputs[0].send_keys('hihi frds!')
inputs[1].submit()

【讨论】:

好帖子...但是我可以不使用 PhantomJS 驱动程序而不是 Firefox 网络驱动程序来通过仅更改 1 行(驱动程序 = webdriver.PhantomJS)来使其完全无头。

以上是关于Ghost.py 返回表单列表的主要内容,如果未能解决你的问题,请参考以下文章

检查项目是不是在列表中 discord python

如何在 C# Win 表单应用程序中使用 MS 通信器返回可用联系人列表?

为啥 Scheme `filter` 表单不能“按顺序”处理列表元素?

在列表中添加表单数据(点网核心)

JavaScript 学习-38.HTML DOM 下拉框 Select 对象

jquery ajax 加载结果列表,即使没有任何查询