读书人

爬虫源码公开之一 - wenwen.rake

发布时间: 2012-10-30 16:13:36 作者: rapoo

爬虫源码公开之一 -- wenwen.rake
wenwen.rake

# == Synopsis## wenwen rake all in one.## == Author# fujun# 2011.05.08## == Copyright# Copyright (c) 2010 id86 Inc.# All rights reserved.## Usage: rake wenwen:***WENWEN_PATH = File.join(Rails.root.to_s, 'lib', 'spider', 'wenwen')namespace :wenwen do  desc "list spider."  task :list_spider => [:environment] do    require File.join(WENWEN_PATH, 'list_spider')    Wenwen::ListSpider.new().run  end  desc "detail spider."  task :detail_spider => [:environment] do    require File.join(WENWEN_PATH, 'detail_spider')    Wenwen::DetailSpider.new().run  endend
第一页是:

“Ruby 搜搜百科” -- http://baike.soso.com/ShowLemma.e?sp=l58776 --这个对我没用,直接无视掉
“Ruby和Java有什么关系么? - 精华知识” -- http://wenwen.soso.com/z/q185733709.htm
“Ruby和java” -- http://wenwen.soso.com/z/q238993261.htm
... ...


规律自然就出来了

id -- 用来保存结果页中 "http://wenwen.soso.com/z/q185733709.htm"。字母“q”后面的那一长串数字,这个也是soso的id。

keyword -- 用来将你输入的关键字进行归类,比如:"javascript什么", "javascript怎么", "javascript表单"这一类比较火的关键字,当他的结果集远远大于500的时候,soso就不会全部将结果都列出来。怎么办?只有不断地细化你的关键字,但这些细化出来的关键字,都将会归到"javascript"这个key_word下面,这样才能保证这些文章都将被发布在
"http://www.id86.com/forum-36-1.html"。这个 "js" 版块下面。

当初写这个爬虫的时候,本应该多一个步骤判断抽出来的文章标题subject是否含有你搜索用的关键字,然后再决定是否保存这个id,这样可以大大减少不相关文章的数量,要让人工去审核,这是绝不可能的。

因为soso的sphinx是用的content去build结果集的。最多500条记录,一页10条,也就是最多只有50页,这肯定是出于性能考虑的。

一来呢,如果全结果集sphinx的话,他build的时候会比较长,最主要的还是去search的时候,需要消耗大量的时间去抽这些匹配到的结果。特别是像js css html这一类关键字,那结果集是相当的庞大。

在搜索像"ruby"这种不是很火的关键字的时候,你会发现,他的结果集只有233项,并且从15页开始,标题里就已经不含"ruby"这个关键字了,那内容更是与我们想要的"ruby"差之甚远了。所以保存这个id之前应该对subject进行一下判断。

17 楼 jerry 2011-06-02 那你为什么不放在这个贴里呢?好好整理一下。 18 楼 D04540214 2011-06-02 好东西,不过已经对爬虫不敢兴趣! 维护了一年多的爬虫项目,小爬虫就不在眼里 19 楼 aa87963014 2011-06-02 被骂就被骂呗

发的一堆垃圾

标题是源码公布OOXX

主帖只有几行代码

跟帖还以为会贴些什么东西结果去分析人家soso的参数。

本来还以为会有什么下载地址或者其他说明什么的

结果就over了 20 楼 macrotea 2011-06-02 为什么国人总这样
人家好心发表自己的帖子,发表自己的知识
如果你碍眼大可以关闭当前页面
没有必要打击

退一万步,即使楼主发的东西不好,但是有碍于你吗
每个人的层次不同,没有必要谩骂与打击
倘若你真牛人,请把个人资料补全. 21 楼 zfj.rails 2011-06-02 macrotea 写道为什么国人总这样
人家好心发表自己的帖子,发表自己的知识
如果你碍眼大可以关闭当前页面
没有必要打击

退一万步,即使楼主发的东西不好,但是有碍于你吗
每个人的层次不同,没有必要谩骂与打击
倘若你真牛人,请把个人资料补全.

谢谢支持哈。

读书人网 >编程

热点推荐