Baiduserp
此gem的目的是专门用来解析百度的搜索结果页.并以最大限度获取SERP结果页面所能拿到的信息为目的. (注意目前这并不是一个批量处理关键词排名的程序, 但可以作为一个批量排名查询软件中解析百度SERP页面的模块)
特点
解析SERP结果尽量全面
众所周知百度的SERP页面现在越来越复杂,左侧的各种新样式层出不穷.右侧也增加了很多内容. 这个GEM的功能就是把SERP页面解析成ruby中的数据结构.
做SERP页面分析的时候有可能会想要分析页面上各种信息, 如SEO排名, SEM排名, 竞争对手排名, 标题/描述文字, 还有相关关键词, 右侧相关推荐信息, 是否有百度开放平台等...
此gem会把上述各种各样的信息都解析出来, 供后续分析使用. 并且如果使用量越来越大, 或者百度又出新产品的话, 也可以增加新模块的解析.
提供命令行接口(既可以测试用,也可以以JSON格式输出)
除了提供ruby调用外, 使用其他编程语言的也可以用命令行的接口, 使用JSON格式输出结果数据. 详细使用说明见下文.
已知问题
目前这个只是一个基本能用的版本,可能会有各种各样的问题,欢迎提BUG. 已知问题列表.
Installation
1 系统要求
Linux或Mac. Linux最好使用新版本的Ubuntu或Fedora系列.
2 安装ruby环境
只支持ruby1.9及以上. 最好的安装ruby的方法是通过RVM,RVM的使用方法可以参考这个页面http://ruby-china.org/wiki/install_ruby_guide, 虽然同时安装了一些不需要的rails相关的软件, 但是介绍很详细.
在最新的Ubuntu或Fedora系列的Linux中,也可以通过apt-get或yum安装ruby1.9.
3 安装gem依赖
需要依赖nokogiri这个gem.而这个gem需要系统中的两个库. 所以在ubuntu或者fedora下需要
$ sudo apt-get install libxslt-dev libxslt libxml2-dev libxml2 # ubuntu
$ sudo yum install libxml2-devel libxml2 libxslt libxslt-devel # fedora
以上依赖安装完成后,
$ gem install nokogiri
4 最后我们安装 baiduserp gem
$ gem install baiduserp
Usage
ruby 代码示例
require 'baiduserp'
require 'open-uri'
require 'pp'
pp Baiduserp.search 'keyword'
pp Baiduserp.parse open(http://www.baidu.com/s?wd=keyword).read.encode('UTF-8')
另外为了方便非ruby程序使用以及一次性调试,也提供了命令行调用方法,可以通过JSON格式交换数据:
$ baiduserp -h
Usage:
1. baiduserp -s 'keyword' # search 'keyword' and print parse result
2. baiduserp -s 'keyword' -o output.json # -o means save result to a file
3. baiduserp -f 'file path' # parse html source code from file
4. baiduserp -s 'keyword' -j # search 'keyword' and print parse result in JSON format
-s, --search Keyword Search Keyword & Parse SERP
-j, --jsonprint Print result in JSON format
-o, --output Output Save Result to File in JSON format
-f, --file File Parse Local File
最终结果采用了哈希表和数组相互嵌套的数据结构.结果示例如下:
$ baiduserp -s
Contributing
欢迎大家帮忙协助继续完善这个gem:
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
或者可以到Issue页面提交问题,可以提BUG,新的需求,各种建议,等等.