怎么用RUBY获取网页上的数据

Python012

怎么用RUBY获取网页上的数据,第1张

Net::HTTP.new方法,返回resp码和实际的data:

require 'net/http'  

h = Net::HTTP.new("www.baidu.com",80)  

resp,data = h.get("/")   

puts resp  

puts data

正如你所知道的,ruby字符被称为一流的对象,它使用了大量的查询和操作方法。一个最基本的字符串操作是把一个字符串分割成多个子字符串。如果你有一个字符串,如“foo, bar, baz”而你希望的是这样三个字符串“foo”,“bar”,“baz”。那么字符串类的split方法就可以帮助你。“split”的基本用法split方法的最基本用法分裂一个由单独字符或字符的静态序列组成的字符串。如果split的第一个变量是一个字符串,那么这个字符串中字符就会被当作一个字符串分隔符使用。但是在逗号分隔的数据中,逗号用来分隔数据,这里的每个字符串成分都被用来分隔数据。#!/usr/bin/env rubystr =foo,bar,bazputsstr.split(,)$ ./1.rbfoobarbaz通过正则表达式来增加灵活性当然,还有一些更容易的方法可以分隔字符串。正则表达式可以为split方法增加灵活性。这里再次拿“foo, bar, baz”。间隔在第一个逗号之后而不是第二个逗号。如果该字符串“,”被当成是分隔符,那么在“baz”字符串的开始处仍然会存在间隔。如果使用“,”字符串,它只与第一个逗号匹配,因为第二个逗号后面没有间隔。其作用还是有限的。解决这个问题的办法是把正则表达式作为定界符的自变量,而不是使用字符串。正则表达式不仅可以匹配静态序列的字符,对字符的不定量和可选字符都同样起作用。编写正则表达式为你的分隔符编写一个正则表达式,第一步就是描述清楚什么是分隔符。在这种情况下,一个逗号后面可能存在一个或多个空格是合理的。这一正则表达式库中存在两个要素:逗号和可选的间隔。间隔会使用* (星号)量词,它表示的意思是“零或更多”。任何在它之前的要素都会匹配零次或若干次。例如,正则表达式/ a * /将匹配序列零或更多“a”字符。#!/usr/bin/env rubystr =foo, bar,bazputsstr.split( /, */ )$ ./2.rbfoobarbaz限制splits的数量想象一个逗号分隔了这样的字符串:“10,20,30,this is an arbitary string”。其格式是三个数字后面跟了一句评论。此评论可以包含任意的文本,包括带有逗号的文本。要防止split分离文本这个文本,我们可以设置一个最大分裂列数。请注意,只有在任意文本的评论字符串处在表格最后一列时才管用。为了限制splits的数量,字符串中数域的数量要作为split方法的第二个变量来发送。#!/usr/bin/env rubystr =10,20,30,ten, twenty and thirtyputsstr.split( /, */, 4 )$ ./3.rb102030en, twentyandthirty了解其局限性分裂法有一些局限性。以字符串“10,20, ‘bob, eve and mallory’,30”为例。预期字符是两个数字,后跟一个引证串(可能包含逗号),然后是另一个数字。split不能正确分隔这个字符串的域。为了做到正确分隔,需要保持字符串扫描器处于开启状态,这样一来它就会记得它有没有在引证串内部。反之,如果扫描仪不在启动状态,就不能解决这样的问题。

linux下ruby编程环境的安装和配置,方法如下:

1、去ruby官方下载安装包,下载地址:http://www.ruby-lang.org/en/downloads/

2、解压缩下载的ruby-1.9-stable.tar.gz安装包,进入目录。

su 

#./configure -prefix=/usr/local/ruby-1.9

#make

#make install

此时可能出现的错误:

echo executable host ruby is required.  use --with-baseruby option.

false ./tool/generic_erb.rb -c -o known_errors.inc

./template/known_errors.inc.tmpl ./defs/known_errors.def

executable host ruby is required. use --with-baseruby option.

make: *** [known_errors.inc] Error 1

出现此问题的原因在于1.9版本的ruby编译需要系统默认安装旧版本的ruby,而ubuntu中默认没有安装。

3、解决方法:

sudo apt-get install ruby

#默认ubuntu10.10会自行安装ruby 1.8,之后再编译1.9就没问题了。

下载1.8.7版本源码编译安装,并设置临时环境变量 ,进入1.8源码目录

su

#./configure -prefix=/usr/local/ruby-1.8

#make && make install

export PATH=/usr/local/ruby-1.8/bin:$PATH

#此时使用ruby -v验证版本为1.8

4、在刚才安装配置ruby1.8的终端中继续重新进行1.9的编译安装,进入1.9源码目录:

    #解压文件  

    tar vfxz ruby-1.9.1-p0.tar.gz  

    #进入解压后的文件夹  

    cd ruby-1.9.1-p0/  

    #编译源码,编译之前,应该先对/usr/local/ruby-1.9.1文件夹设置权限.  

    ./configure --prefix=/usr/local/ruby-1.9.1  

    #大名鼎鼎的 make 和 install  

    make && make install  

    #设置PATH路径,把安装的ruby放在系统PATH前面,避免调用操作系统自带的ruby  

    export PATH=/usr/local/ruby-1.9.1/bin:$PATH  

    #在 ~/.profile 文件中增加了这样的代码:  

    if [ -d "/usr/local/ruby-1.9.1/bin" ]  then  

        PATH="/usr/local/ruby-1.9.1/bin:$PATH"  

    fi  

    然后 注销 再登陆一次. 

    #如无意外  

    ruby -v  

    #ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]        

    #ruby 1.9.1安装成功了.

注意:之前安装了1.8版本ruby,可以直接通过rm -rf /usr/local/ruby-1.8删除即可。