我想处理整个网站的除外部链接之外的所有链接。有什么简单的方法可以识别外部链接并跳过它吗?到目前为止,我的代码看起来像(站点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
文件上传不能使用: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表
我在设置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脚本,它将接收用户名和密码,然后继续在另一个网站的登录表单上填写帐户详细信息并返回,然后点击链接并检索帐户历史记录。为此,我使用了Mechanizegem。我一直在关注示例here但我似乎仍然无法让它工作。我已经大大简化了它,以尝试让它在各个部分工作,但一个简单的表单填写却让我受阻。这是我的代码:#scriptgetscalledwithausernameandpasswordforthesiterequire'mechanize'#createamechanizeinstantagent=Mechanize.newagent.get('https://mys
我想从使用JSON数据设置自定义搜索参数的网站检索数据,这些参数似乎是通过AJAX请求的。传输的数据显示在Firebug中的XHR->RequestPayload下:{"filters":[{"action":"post","filterName":"Hersteller","ids":[269],"settingName":"Hersteller","settingValue":"ValueA"},{"action":"delete","filterName":"Modelle","settingName":"Modelle","settingValue":""}]}该站点不传输任何
我有一个基于Mechanize的Ruby脚本来抓取网站。我希望通过在本地缓存下载的HTML页面来加快速度,使整个“调整输出->运行->调整输出”周期更快。我宁愿不必只为这个脚本在机器上安装外部缓存。理想的解决方案是插入Mechanize并透明地缓存获取的页面、图像等。有人知道可以执行此操作的库吗?还是另一种实现相同结果的方法(脚本第二次运行得更快)? 最佳答案 做这类事情的一个好方法是使用(AWESOME)VCRgem.这是您将如何操作的示例:require'vcr'require'mechanize'#SetupVCR'sconf
我想单击我使用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属性)。如果那不可能,有什么替代方案? 最佳
是否有直接的方法来使用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
Mechanize可以进行Javascript调用吗?这在屏幕抓取时协商AJAX会很方便... 最佳答案 不,它不能。如果您需要与javascript交互,您应该查看其他解决方案,例如watir. 关于ruby-Mechanize可以进行Javascript调用吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2946323/
我如何在Ruby的Mechanizegem中提交一个POST请求,同一个键有多个值?例如我想要发送foo=1和foo=2。我试过了parameter={'foo'=>['1','2']}Mechanize.new.post('http://somewebsite.com',parameters)但使用requestb.in,我只得到'12'代表'foo',而不是'1'代表'foo'的一个值,'2'代表另一个'foo'值。此外:我这样做的原因是因为我想在多选列表中选择多个值,但是在选择列表上调用select_all并提交表单似乎不起作用,所以我尝试手动提交POST数据。