刮擦ASP.net网站:需要使用pythonmechaniz翻页浏览Gridview

2024-09-29 23:29:36 发布

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

我想刮一个asp.net页,我需要在其中翻页浏览gridview控件中的项列表。我从来没用过asp.net但我一直在网上寻找线索,但现在我遇到了麻烦。页面链接的形式如下:

javascript:__doPostBack('ctl00$ctl00$ctl00$ContentPlaceHolderEverything$ContentPlaceHolderFullWidthContent$ContentPlaceHolderMain$gridViewItems','Page$2')

我目前正在尝试使用Python中的Mechanize来实现这一点。假设一开始我将通过viewize处理以下变量。在

^{pr2}$

使用网络监视器(Fiddler2),我注意到又填充了两个变量,所以我也添加了这些变量:

br.select_form(nr=0)
br.form.new_control('hidden','ctl00$ctl00$ctl00$ContentPlaceHolderEverything$ScriptManager1',attrs = dict(name='ctl00$ctl00$ctl00$ContentPlaceHolderEverything$ScriptManager1'))
br.form.new_control('hidden','hiddenInputToUpdateATBuffer_CommonToolkitScripts',attrs = dict(name='hiddenInputToUpdateATBuffer_CommonToolkitScripts'))
br.form.new_control('hidden','__ASYNCPOST',attrs = dict(name='__ASYNCPOST'))
br.form.set_all_readonly(False)
br['hiddenInputToUpdateATBuffer_CommonToolkitScripts'] = '1'
br['__ASYNCPOST'] = 'TRUE'
br['ctl00$ctl00$ctl00$ContentPlaceHolderEverything$ScriptManager1'] = 'ctl00$ctl00$ctl00$ContentPlaceHolderEverything$ContentPlaceHolderFullWidthContent$ContentPlaceHolderMain$SearchResultsUpdatePanel|ctl00$ctl00$ctl00$ContentPlaceHolderEverything$ContentPlaceHolderFullWidthContent$ContentPlaceHolderMain$gridViewItems'
br['__EVENTTARGET'] = 'ctl00$ctl00$ctl00$ContentPlaceHolderEverything$ContentPlaceHolderFullWidthContent$ContentPlaceHolderMain$gridViewItems'
br['__EVENTARGUMENT'] = 'Page$2'
response = br.submit(name="ctl00$ctl00$ctl00$ContentPlaceHolderEverything$ContentPlaceHolderFullWidthContent$ContentPlaceHolderMain$itemLocator$btnItemSearch")
html = br.response().read()

在这两种情况下,我得到的html仍然只用于第1页。在

我认为可能有几个潜在的问题:

  1. 我不确定我的提交是否正确。页面上有多个提交按钮,所以我要搜索的是“搜索”按钮,这是我以前用来进入第一页的按钮。我可以理解为什么第一页会显示出来。如果我使用br.提交()如果没有名称,则使用另一个提交控件将您带到其他位置。

  2. 在浏览器中单击页码时,gridview控件将更新而不重新加载页面。由于我没有运行Javascript,也许我不能得到它,但我至少希望能够从POST中获取数据并解析它。

任何帮助都将不胜感激!在


Tags: namebrformnew页面attrscontrolhidden

热门问题