在过去,我遇到了Mechanize无法解析DNS本身的问题。
尽管我很确定Mechanize使用Resolv来获取底层网站,但我也无法获得agent.get('http://formitas.si')
的工作。
相反,我所做的是显式访问Resolv库并将IP设置为我访问的内容而不是主机名。
require 'mechanize'
require 'Resolv'
@agent = Mechanize.new
address = Resolv.getaddress "formitas.si"
page = @agent.get('http://' + address.to_s) # wouldn't let me use string interpolation on SO
pp page
从而结束了给我这个:
#<Mechanize::Page
{url #<URI::HTTP:0x007f7f93ec7c68 URL:http://212.44.99.132/>}
{meta_refresh}
{title nil}
{iframes}
{frames}
{links #<Mechanize::Page::Link "" "http://www.parallels.com/plesk/">}
{forms}>
我用'wget'并得到了这一点: --2014-03-12 09:30:43-- HTTP:// formitas .si/ 正在解析formitas.si(formitas.si)... 212.44.99.132 正在连接formitas.si(formitas.si)| 212.44.99.132 |:80 ...已连接。 发送HTTP请求,等待响应... 500内部服务器错误 2014-03-12 09:30:44错误500:内部服务器错误。 – squiguy
标题有误导性。问题不在于机械化返回错误,它只是报告问题的信使。服务器在Mechanize请求的有效URL上返回500。 –
我尝试卷曲,它的工作......所以卷曲的作品和wget /机械不要...... – davidhq