Python&;机械化:如何连续浏览页面?
我的问题如下: 我正试图写一个刮刀,通过一个航空票务网站的订单过程运行。因此,我想根据之前的页面结果来刮取一些页面(我希望你明白我的意思)。到目前为止,我:Python&;机械化:如何连续浏览页面?,python,screen-scraping,web-scraping,mechanize,mechanize-python,Python,Screen Scraping,Web Scraping,Mechanize,Mechanize Python,我的问题如下: 我正试图写一个刮刀,通过一个航空票务网站的订单过程运行。因此,我想根据之前的页面结果来刮取一些页面(我希望你明白我的意思)。到目前为止,我: import mechanize, urllib, urllib2 url = 'any url' br = mechanize.Browser() br.set_handle_robots(False) br.addheaders = [('User-agent', 'Mozilla/5.0 (W
import mechanize, urllib, urllib2
url = 'any url'
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11')]
br.open(url)
response = br.response().read()
br.select_form(nr=1)
br.form.set_all_readonly(False)
## now I am reading out the variables of form(nr=1)
for control in br.form.controls:
if not control.name:
print " - (type) =", (control.type)
continue
print " - (name, type, value) =", (control.name, control.type, br[control.name])
## now I am modifying the variables
br['fromdate'] = '2012/11/03'
br['todate'] = '2012/11/07'
## now I am submitting the form and saving the output in the variable bookingsite
response = br.submit()
bookingsite = response.read()
我的问题是:如何使用变量bookingsite,它再次包含一个我想要修改和提交的表单,就像一个普通URL一样?只需设置
br.open(bookingsite)
???或者是否有其他方法修改和提交输出(然后再次提交输出并接收新的输出页面)?在初始响应后
response=br.submit()
从响应对象中选择表单:
response.select_form()
更改表单中字段的值后,请提交表单:
response.submit()
另外,如果你正在自动化预订网站,它们很可能有大量的Javascript。Mechanize不处理Javascript。我建议改为使用请求。你会很高兴的。从
bookingsite
提取数据应该不是问题,但我不明白你为什么说bookingsite
会包含一个“表单”。它应该只包含对您提交的表单的HTML响应(即br.submit()
),您能澄清一下吗?嘿,大卫,谢谢您的回复!解释如下:第一个站点包含一个表单,您可以在其中输入起飞和到达日期、机场等详细信息,然后单击“提交”,您将进入第二个页面(预订站点),在该页面中,您可以看到在特定日期飞往所选机场的所有飞机。在第二个页面上,您需要选择一个特定的航班(现在选择以另一种形式进行,在本例中,每个航班/飞机都有单选按钮)。现在我需要选择一个并再次提交第二页以进入第三页。确定-然后您应该能够调用response。选择表单()
并设置单选按钮,然后是response.submit()
。