asp.net – 使用Python Mechanize进行屏幕分析aspx – Javascrip
发布时间:2020-12-16 00:18:26 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用Mechanize / Python在scraperwiki( http://scraperwiki.com/scrapers/food_standards_agency/)上搜索英国食品评级机构数据aspx搜索结果页面(例如,g http://ratings.food.gov.uk/QuickSearch.aspx?q=po30),但在尝试关注具有该表单的“下一页”
我正在尝试使用Mechanize / Python在scraperwiki(
http://scraperwiki.com/scrapers/food_standards_agency/)上搜索英国食品评级机构数据aspx搜索结果页面(例如,g
http://ratings.food.gov.uk/QuickSearch.aspx?q=po30),但在尝试关注具有该表单的“下一页”链接时遇到问题:
<input type="submit" name="ctl00$ContentPlaceHolder1$uxResults$uxNext" value="Next >" id="ctl00_ContentPlaceHolder1_uxResults_uxNext" title="Next >" /> 表单处理程序如下所示: <form method="post" action="QuickSearch.aspx?q=po30" onsubmit="javascript:return WebForm_OnSubmit();" onkeypress="javascript:return WebForm_FireDefaultButton(event,'ctl00_ContentPlaceHolder1_buttonSearch')" id="aspnetForm"> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> <input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" /> 手动单击“下一步”链接时的HTTP跟踪显示__EVENTTARGET为空?我可以在其他刮刀上找到的所有婴儿床都显示出__EVENTTARGET的操纵作为处理下一页的方式. 实际上,我不确定我想要抓取的页面是如何加载下一页的?无论我在刮刀上扔什么,它都只能设法加载第一个结果页面. (即使能够改变每页的结果数量也很有用,但我也看不出怎么做!) 那么 – 关于如何刮取第N个结果页面的任何想法N> 0? 解决方法
Mechanize不处理javascript,但对于这种特殊情况,它不需要.
首先我们用mechanize打开结果页面 url = 'http://ratings.food.gov.uk/QuickSearch.aspx?q=po30' br = mechanize.Browser() br.set_handle_robots(False) 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(url) response = br.response().read() 然后我们选择aspnet表单: br.select_form(nr=0) #Select the first (and only) form - it has no name so we reference by number 表单有5个提交按钮 – 我们想提交将我们带到下一个结果页面的按钮: response = br.submit(name='ctl00$ContentPlaceHolder1$uxResults$uxNext').read() #"Press" the next submit button 表单中的其他提交按钮是: ctl00$uxLanguageSwitch # Switch language to Welsh ctl00$ContentPlaceHolder1$uxResults$Button1 # Search submit button ctl00$ContentPlaceHolder1$uxResults$uxFirst # First result page ctl00$ContentPlaceHolder1$uxResults$uxPrevious # Previous result page ctl00$ContentPlaceHolder1$uxResults$uxLast # Last result page 在机械化中我们可以得到这样的表单信息: for form in br.forms(): print form (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 如何通过ajax上传文件
- asp.net-mvc – 在MVC3中扩展ClaimsIdentity
- asp.net 2.0中利用Ajax2.0实现JSON传送大量页面数据
- 如何动态更改整个ASP.NET应用程序的主题?
- ASP.NET MVC模型绑定IList <>参数
- asp.net – 在Web Gardens中添加动态路由
- asp.net-mvc – 无法获得有效的Unity Session Lifetime Man
- asp.net – Repeater中DropDownList的SelectedValue
- asp.net-mvc – 将会话永久保持为stackoverflow
- asp.net-mvc – ELMAH.axd是可浏览的,但永远不会记录我的任
推荐文章
站长推荐
- asp.net – 有关iPhone网站优化的帮助
- asp.net – 完全替换Swashbuckle UI
- asp.net – 在.NET中发生部分回发时,用户控件中的
- asp.net – 使用Html而不是csHtml
- asp.net-core – ASP.NET Core中的System.Data.E
- asp.net-mvc-2 – 我的MVC2应用程序可以在查询字
- asp.net-mvc – MVC:创建应用程序基本URL链接的
- asp.net – 如何在没有实体框架的MVC中使用Simpl
- asp.net – SignalR不再工作“找不到包含OwinSta
- asp.net-mvc – ASP.NET MVC:处理取消按钮的正确
热点阅读