无法使用mechanize python访问字段

2024-09-30 06:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Mechanize Python使用以下代码进入站点http://www.sj.se/travel/booksearchlocation.form?mode=normal&l=sv

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)

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')]

# Open site
r = br.open("http://www.sj.se/travel/booksearchlocation.form?mode=normal&l=sv")

使用选择窗体

^{pr2}$

工作正常,但在输入字段中选择名称:“travelQuery.departureLocationName““

br["travelQuery.departureLocationName"] = "Uppsala C"

我得到以下错误:

Traceback (most recent call last):
  File "/home/joel/workspace/test/test/__init__.py", line 53, in <module>
    br["travelQuery.departureLocationName"] = "Uppsala C"
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_form.py", line 2780, in __setitem__
    control = self.find_control(name)
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_form.py", line 3101, in find_control
    return self._find_control(name, type, kind, id, label, predicate, nr)
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_form.py", line 3185, in _find_control
    raise ControlNotFoundError("no control matching "+description)
mechanize._form.ControlNotFoundError: no control matching name 'travelQuery.departureLocationName'

我确信这个输入字段是存在的,因为我可以在查看站点的源代码时看到它。打印表单时,我得到以下结果:

<travelQuery POST http://www.sj.se/travel/booksearchlocation.form;jsessionid=ED17C7B9906560F4DFAC8FD3DBA6E258.p1?mode=normal&l=sv application/x-www-form-urlencoded
  <HiddenControl(method=) (readonly)>
  <HiddenControl(mode=) (readonly)>
  <IgnoreControl(<None>=<None>)>
  <IgnoreControl(<None>=<None>)>>

为什么我不能选择输入字段?在


Tags: pybrformtruehttpmodewwwline

热门问题