我需要模拟输入项目名称并点击http://ccclub.cmbchina.com/ccclubnew/上的搜索按钮的过程。
如果我直接在HTML中检查,则搜索表单的名称为“searchKey”
<span class="searchinput">
<input type="text" name="searchKey" id="searchKey" maxlength="25">
</span>
下面是脚本:
import mechanize
import cookielib
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Want debugging messages?
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open("http://ccclub.cmbchina.com/ccclubnew/")
我得到了
br.select_form('searchKey')
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "build\bdist.win32\egg\mechanize\_mechanize.py", line 524, in select_form
raise FormNotFoundError("no form matching "+description)
FormNotFoundError: no form matching name 'searchKey'
并且br.forms()为空。
我的问题是:为什么机械化无法选择html中存在的形式?什么是解决这个问题的可能解决方案?
感谢
答案 0 :(得分:2)
名称为searchKey的input
本身不是形式。表单附带<form>
标记,但老实说,此搜索框似乎不是表单的一部分;你必须模拟设置输入的文本并按下它。
答案 1 :(得分:1)
如何使用lxml或BeatifulSoup?