草庐IT

mechanical

全部标签

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

ruby - Mechanize 可以进行 Javascript 调用吗?

Mechanize可以进行Javascript调用吗?这在屏幕抓取时协商AJAX会很方便... 最佳答案 不,它不能。如果您需要与javascript交互,您应该查看其他解决方案,例如watir. 关于ruby-Mechanize可以进行Javascript调用吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2946323/

ruby - 在 Ruby Mechanize 的 POST 请求中为同一个键提交多个值

我如何在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数据。