草庐IT

mechanism

全部标签

ruby - Mechanize :从多个相同表单中选择正确的提交

我使用Mechanize循环遍历已分页的表格。我对包含多个提交输入的表单有疑问。输入标签用作分页,它们是动态生成的。当我循环浏览需要抓取的页面时,我需要能够选择正确的输入,因为只有其中一个会带我到“下一页”。正确的标签可以通过名称、类、值等不同的属性来识别。但我的问题是,我无法找到如何告诉mechanize使用哪个标签。我试过这个:require'mechanize'require'yaml'url="http://www.somewhere.com"agent=Mechanize.newpage=agent.get(url)loopdoputs"somecontentfromsite

ruby - Mechanize 前/后连接 Hook

使用Mechanize,我需要找到一些方法将请求限制为每秒1个(或每5秒1个,或每分钟2个,等等,关键是找到某种方法来限制请求速率)。搜索,这似乎是开始解决问题的方法:连接前/后Hook。只有我不完全知道如何处理它们或如何处理,我猜测从我的水平和研究我需要做一个lambda或proc说'嘿等一下',似乎足够基本。我的问题基本上是关于如何执行此操作的示例或其他线索。我尝试了几个lambda(而且我对这到底会做什么了解程度很低):@agent.pre_connect_hooks但这只会将我的请求变成错误:ArgumentError:wrongnumberofarguments(2for0)

ruby - 处理除外部链接之外的所有链接(ruby + mechanize)

我想处理整个网站的除外部链接之外的所有链接。有什么简单的方法可以识别外部链接并跳过它吗?到目前为止,我的代码看起来像(站点url通过命令行参数传递)我正在使用mechanize(0.9.3)和ruby1.8.6(2008-08-11补丁级别287)[i386-mswin32]请注意,该网站可以使用相对路径,因此没有主机/域,这会使它变得有点复杂require'mechanize'defprocess_page(page)putsputspage.titleSTDIN.getspage.links.eachdo|link|process_page($agent.get(link.href

ruby - 使用 Mechanize for Ruby 上传文件

文件上传不能使用:form.file_upload_with(:name=>'image[1]').file_name='/tmp/image.jpg'form.submit这是一个过时的例子:https://github.com/sparklemotion/mechanize/blob/master/examples/flickr_upload.rb我在两个不同的网站上试过了。我正在使用Mechanize2.6.0。 最佳答案 稍微偏离主题,但我发现另一种使用Mechanize上传文件的方法很有用,特别是如果您没有方便的HTML表

ruby - 使用 Mechanize 设置 HTTP 用户代理?

我在设置user-agent时遇到困难。如您所见,我的自定义user_agent_alias没有返回。有人可以解释为什么这不起作用以及我该如何解决这个问题吗?require'rubygems'require'mechanize'require'nokogiri'm=Mechanize.newm.user_agent_alias='MyCustomUserAgent'page=m.get("http://whatsmyuseragent.com/")html=Nokogiri::HTML(page.body)putshtml.xpath('//*[(@id="body_lbUserAge

ruby - 使用 Ruby 和 Mechanize 填写远程登录表单之谜

我正在尝试实现一个Ruby脚本,它将接收用户名和密码,然后继续在另一个网站的登录表单上填写帐户详细信息并返回,然后点击链接并检索帐户历史记录。为此,我使用了Mechanizegem。我一直在关注示例here但我似乎仍然无法让它工作。我已经大大简化了它,以尝试让它在各个部分工作,但一个简单的表单填写却让我受阻。这是我的代码:#scriptgetscalledwithausernameandpasswordforthesiterequire'mechanize'#createamechanizeinstantagent=Mechanize.newagent.get('https://mys

ruby-on-rails - 如何在 Ruby 中使用 Mechanize 或 Faraday 发送 JSON 表单数据

我想从使用JSON数据设置自定义搜索参数的网站检索数据,这些参数似乎是通过AJAX请求的。传输的数据显示在Firebug中的XHR->RequestPayload下:{"filters":[{"action":"post","filterName":"Hersteller","ids":[269],"settingName":"Hersteller","settingValue":"ValueA"},{"action":"delete","filterName":"Modelle","settingName":"Modelle","settingValue":""}]}该站点不传输任何

ruby - 有人知道 Ruby Mechanize 的缓存插件吗?

我有一个基于Mechanize的Ruby脚本来抓取网站。我希望通过在本地缓存下载的HTML页面来加快速度,使整个“调整输出->运行->调整输出”周期更快。我宁愿不必只为这个脚本在机器上安装外部缓存。理想的解决方案是插入Mechanize并透明地缓存获取的页面、图像等。有人知道可以执行此操作的库吗?还是另一种实现相同结果的方法(脚本第二次运行得更快)? 最佳答案 做这类事情的一个好方法是使用(AWESOME)VCRgem.这是您将如何操作的示例:require'vcr'require'mechanize'#SetupVCR'sconf

ruby - 单击与 Mechanize 的 xpath 链接

我想单击我使用xpath(nokogiri)选择的Mechanize链接。这怎么可能?next_page=page.search"//div[@class='grid-dataset-pager']/span[@class='currentPage']/following-sibling::a[starts-with(@class,'page')][1]"next_page.click问题是nokogiri元素没有点击功能。我无法读取href(URL)并发送获取请求,因为该链接定义了onclick函数(没有href属性)。如果那不可能,有什么替代方案? 最佳

ruby - 如何在使用 Ruby Mechanize 加载页面之前设置 Referer header ?

是否有直接的方法来使用Mechanize2.3设置自定义header?我尝试了formersolution但是得到:$agent=Mechanize.new$agent.pre_connect_hooks':undefinedmethod`pre_connect_hooks'fornil:NilClass(NoMethodError) 最佳答案 Thedocs说:get(uri,parameters=[],referer=nil,headers={}){|page|...}例如:agent.get'http://www.google