用Ruby抓取网页通过ActiveRecord存到数据库
工作内容:抓取指定网页的规则的连接地址的内容,并取得其网页中指定部分的内容存到数据库。
技术点1:抓取并分析网页
采用hpricot,其主页可见(http://code.whytheluckystiff.net/hpricot/)。Hpricot is a very flexible HTML parser。
doc = Hpricot(open(url))
这个就是去的url的内容,返回一个doc,这个是Element类的实例对象。也可以认为是一个DOM。
可以对这个对象进行查找,修改等操作,具体见hpricot主页的文档。
技术点2:编码转换
网页可能为gbk编码,也可能为gb2312编码。
数据库为mysql,UTF-8编码,以防万一,在建立数据库连接之后,执行下列语句:
ActiveRecord::Base.connection.execute ‘SET NAMES UTF8′
把mysql客户端的编码也设为UTF8,以防出现乱码。
然后用Iconv转换抓取的数据:
ar_object.some_text = Iconv.new(”UTF-8//IGNORE”,”gb2312″).iconv(gb2312_data )
这个就是把gb2312的数据转换为utf-8了。
另外,不知道不进行上面转换,而直接实用gb2312编码的数据,在建立数据库客户端连接之后,执行
ActiveRecord::Base.connection.execute ‘SET NAMES GB2312′
是不是也可以呢,没试过。
RSS feed for comments on this post · TrackBack URI
Leave a reply