【问题标题】:Mechanize: submitting form but not loading new page to see results机械化:提交表单但不加载新页面以查看结果
【发布时间】:2012-12-28 14:07:06
【问题描述】:

好的,所以我开始有点沮丧了。我花了一天的大部分时间试图弄清楚为什么我的脚本不起作用 - 无论是在 github 上还是在此处。它应该相当简单。机械化加载页面,填写表格,提交表格,打开带有公司信息的新页面并发布内容。它只是不工作。当我检查代码时,我可以看到填写了正确的表单,但是在 mechanize 提交表单后,它并没有进入新页面,而是停留在填写表单的那个页面上。代码是这样的:

from mechanize import Browser

br = Browser()

url = "http://cvr.dk/Site/Forms/CMS/DisplayPage.aspx?pageid=0"

cvr = br.open(url).read()

#I select the form
br.select_form(name="aspnetForm")

#I fill in 19997049 as a company number
br.form['ctl00$QuickSearch1$CvrTextBox'] = "19997049"

response = br.submit()

content = response.read()

print content

我觉得它非常简单,但是我错过了提交表单时应该发生的重定向。

编辑:网站上似乎有很多 javascript。可能是这个原因吗?什么时候有什么选项?

EDIT2:好的,看来我可以简单地在 url 中添加公司编号并获取我想要的页面,但我仍然对为什么这个脚本不起作用感到困惑。

非常感谢您的任何反馈

【问题讨论】:

  • 我认为表单实际上加载了另一个页面并且没有做一些 AJAX wizadry??
  • 好吧,当我填写表格并通过 Chrome 提交时,会加载另一个页面,但是使用 mechanize 我并没有走那么远。不要认为它是 AJAX wizadry,可能是 javascript 的问题。不知何故,我在提交后没有被重定向。

标签: python screen-scraping mechanize mechanize-python


【解决方案1】:

你需要告诉它使用哪个按钮:

response = br.submit(name='ctl00$QuickSearch1$CvrSearchButton')

这可行,但会引发 robots.txt 的问题,这是一个道德困境。

【讨论】:

  • 非常感谢。像魅力一样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 2020-06-22
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多