使用Ruby刮擦ASP.NET站点

时间:2010-05-12 21:36:50

标签: asp.net ruby screen-scraping

我想使用Ruby抓取这个ASP.NET站点的搜索结果,最好只使用Hpricot(我无法打开Firefox的实例):http://www.ngosinfo.gov.pk/SearchResults.aspx?name=&foa=0

但是,我无法弄清楚如何浏览每一页的结果。基本上,我需要模拟点击这些链接:

<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$2','')" class="blue_11" id="ctl00_ContentPlaceHolder1_Pager1">2</a>
<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$3','')" class="blue_11" id="ctl00_ContentPlaceHolder1_Pager1">3</a>

我尝试使用Net :: HTTP来处理帖子,但是虽然收到了正确的HTML,但没有搜索结果(我可能没有正确地做到这一点)。此外,页面的URL不包含任何指示页面的参数,因此无法以此方式强制执行结果。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:8)

使用mechanize-1.0.0可以起到以下作用:

 agent = Mechanize.new
 page = agent.get('http://127.0.0.1/some.aspx')

 form = page.form("aspnetForm")
 form.add_field!('__EVENTARGUMENT', 'Page$2')
 form.add_field!('__EVENTTARGET', 'ctl00$ContentPlaceHolder1$gvwSomeList')
 page = agent.submit(form) # this gets page 2

答案 1 :(得分:1)

更好的检查一下Mechanize。关于屏幕抓取的一个很好的起点是关于机械化的railscasts.com一集。

答案 2 :(得分:-1)

如果您刚开始使用,可能需要查看Nokogiri。它比Hpricot(似乎已被放弃)更lightweight and better-documented

编辑:Jakub Hampl是正确的 - Mechanize是您正在寻找与网站互动的内容。它与Nokogiri(解析HTML和XML)合作。