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 香港
{:ads_right=>
[{:rank=>1,
:title=>"预订香港酒店上携程,全景图..",
:content=>"订香港酒店,享受有房保障,服务好,折扣低,返现高达201元,订香港酒店上携程超划算!",
:site=>"www.ctrip.com"},
{:rank=>2,
:title=>"香港-去哪儿网度假频道,聪明..",
:content=>"香港-去哪儿网度假频道,比价首选!180000条报价实时更新,先比价后出行!",
:site=>"dujia.qunar.com"},
{:rank=>3,
:title=>"香港香港怎么玩最划算?",
:content=>"深圳旅行社香港,香港旅游您的超值之选!天天出团港澳游专线,缤纷全程绝不",
:site=>"www.sztygl128.com"},
{:rank=>4,
:title=>"香港旅游攻略-150000条点评",
:content=>"还没来过香港?507个景点都玩遍?到到网告诉你网友怎么玩(150000张游记照片)!",
:site=>"www.daodao.com"},
{:rank=>5,
:title=>"香港旅游首选北京青年旅行社..",
:content=>"北京青年旅行社专业香港旅游旅行社,高品质服务,天天折扣价,",
:site=>"www.hqly8.com"},
{:rank=>6,
:title=>"香港旅游特价啦!香港旅游价..",
:content=>"本社邀你一起体验超值香港旅游,全程绝无强制购物,行程安排合理.",
:site=>"www.cctbj.net"},
{:rank=>7,
:title=>"香港旅游线路",
:content=>"北京旅行社提供香港咨询服务,多条精品旅游线路供您选择.",
:site=>"www.ctslyw.com"},
{:rank=>8,
:title=>"全新香港旅游报价,香港旅游..",
:content=>"北京国际旅行社,精选多条香港旅游线路,信誉保证,全程无隐性消费.",
:site=>"www.quly8.net"}],
:ads_top=>
[{:rank=>1,
:title=>"香港酒店预订 在Agoda立享1-7折",
:content=>"香港酒店预订,尽在Agoda,网上订购低价回馈,为您节省75%.",
:site=>"www.agoda.com"},
{:rank=>2,
:title=>"香港酒店预订 在Agoda立享1-7折",
:content=>"香港酒店预订,尽在Agoda,网上订购低价回馈,为您节省75%.",
:site=>"www.agoda.com"}],
:pinpaizhuanqu=>false,
:ranks=>
[{:rank=>1,
:url=>
"http://baike.baidu.com/link?url=Ujomxkw-4Whq7C7TI6do9nxHr3G0sO6ywJ3SZfr-lX4qQiht-2rnuGomrclwc4bJ",
:title=>"香港_百度百科",
:content=>nil,
:mu=>"http://baike.baidu.com/view/2607.htm",
:baiduopen=>false},
{:rank=>2,
:url=>"http://lvyou.baidu.com/xianggang/",
:title=>"2013香港旅游攻略_香港景点线路游记_百度旅游",
:content=>nil,
:mu=>"http://lvyou.baidu.com/xianggang/",
:baiduopen=>false},
{:rank=>3,
:url=>
"http://image.baidu.com/i?tn=baiduimage&ct=201326592&lm=-1&cl=2&fr=ala1&word=%CF%E3%B8%DB",
:title=>"香港_百度图片 - 举报图片",
:content=>nil,
:mu=>
"http://image.baidu.com/i?tn=baiduimage&ct=201326592&lm=-1&cl=2&fr=ala1&word=%CF%E3%B8%DB",
:baiduopen=>false},
{:rank=>4,
:url=>"http://www.gov.hk/sc/residents/",
:title=>"GovHK 香港政府一站通:本港居民",
:content=>
"香港政府为当地居民提供的资讯和服务,内容包括通讯及科技、文化、康乐及运动、教育及培训、就业、环境、政府、法律及治安、保健及医疗服务、房屋及社会服务、入境事务...",
:mu=>nil,
:baiduopen=>false},
{:rank=>5,
:url=>"http://www.baidu.com/s?rtt=2&tn=baiduwb&rn=20&cl=2&wd=%CF%E3%B8%DB",
:title=>"香港的最新微博结果",
:content=>nil,
:mu=>"http://www.baidu.com/s?rtt=2&tn=baiduwb&rn=20&cl=2&wd=%CF%E3%B8%DB",
:baiduopen=>false},
{:rank=>6,
:url=>"http://tieba.baidu.com/f?kw=%CF%E3%B8%DB&fr=ala0",
:title=>"香港吧 百度贴吧",
:content=>
"月活跃用户:38万人 累计发贴:202万 图片(1856) | 视频(61) | 精品贴(335) 香港和上海的夜景那个美?????????? 点击:439 回复:259 最近怎么那么多自以为漂亮的S!B女求认证啊。 点击:303 回复:69 什么时候,去香港不必签证,和去北京上海一样容... 点击:839 回复:187 查看更多香港吧内容>> tieba.baidu.com/香港?fr=ala0 2013-10-18",
:mu=>"http://tieba.baidu.com/f?kw=%CF%E3%B8%DB&fr=ala0",
:baiduopen=>false},
{:rank=>7,
:url=>"http://www.weather.com.cn/html/weather/101320101.shtml",
:title=>"香港天气预报_一周天气预报_中国天气网 - 最近访问:",
:content=>nil,
:mu=>"http://www.weather.com.cn/html/weather/101320101.shtml",
:baiduopen=>true},
{:rank=>8,
:url=>"http://www.mafengwo.cn/travel-scenic-spot/mafengwo/10189.html",
:title=>"2013香港旅游攻略,香港自助游攻略,蚂蜂窝香港出游攻略游记 - 蚂蜂窝",
:content=>
"在香港寻吃完全就是一场舌尖的盛宴,从街边小吃到世界顶级的米其林餐厅任您选择,茶餐厅、早茶、烧腊和及甜品极具港式风味,世界各地的美食料理也一个不落单。 香港...",
:mu=>nil,
:baiduopen=>false},
{:rank=>9,
:url=>"http://hongkong.cncn.com/",
:title=>"香港旅游攻略_香港香港旅游景点_香港旅游网",
:content=>
"香港欣欣旅游网,提供香港香港旅游景点推荐、10月香港旅游攻略、香港旅行社、香港旅游线路、香港酒店预订、香港旅游地图等出行指南及旅游服务●欣欣旅游网 CNCN.com ...",
:mu=>nil,
:baiduopen=>false},
{:rank=>10,
:url=>"http://www.baidu.com/s?tn=baidurt&rtt=1&bsst=1&wd=%CF%E3%B8%DB",
:title=>"香港的最新相关信息",
:content=>nil,
:mu=>"http://www.baidu.com/s?tn=baidurt&rtt=1&bsst=1&wd=%CF%E3%B8%DB",
:baiduopen=>false}],
:related_keywords=>
["香港电影",
"香港旅游",
"香港天气",
"香港大学",
"香港购物",
"香港地图",
"香港电视剧",
"香港地铁",
"香港中文大学",
"香港苹果官网"],
:result_num=>100000000,
:right_hotel=>nil,
:right_personinfo=>nil,
:right_relaperson=>
[{:title=>"香港特别行政区行政区划", :names=>["油尖旺区", "九龙城区", "湾仔", "元朗区", "西贡区"]},
{:title=>"全球性国际金融中心", :names=>["新加坡", "纽约", "东京", "伦敦"]},
{:title=>"其他人还搜", :names=>["台北", "上海", "直布罗陀", "海南", "深圳"]}],
:right_weather=>nil}
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,新的需求,各种建议,等等.