查看: 1627|回复: 20
打印 上一主题 下一主题

[工具] 又一个百度百科制作工具。

[复制链接]
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    跳转到指定楼层
    1
    发表于 2008-10-15 16:22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    如果不想要图片和链接的可以用我瞎写的ruby脚本。:lol
    max代表最大号,min是最小, 从1开始,每天想处理多少就处理多少,也可以放到服务器上全部处理成一个文件。
    低网速情况的代码
    1. require 'rubygems'
    2. require 'hpricot'
    3. require 'open-uri'
    4. max=200
    5. min=1
    6. dic=File.open("baidudic#{min}-#{max}.txt","a")
    7. while min<max+1 do
    8. url = "http://baike.baidu.com/view/#{min}.htm"
    9. puts "#{url}"
    10. doc= Hpricot(open(url))
    11. title0= (doc/:title).inner_html
    12. title=title0.split('_')
    13. content= (doc/"#lemmaContent").inner_html
    14. temp=content.gsub(/<\/?[^>]*>/, "")
    15. temp=temp.gsub(/编辑本段/, "")
    16. dic.puts title[0]
    17. dic.puts "原文链接:#{url}"
    18. dic.puts temp
    19. dic.puts "</>"
    20. puts "OK"
    21. min=min+1
    22. end
    23. dic.close
    复制代码
    高网速情况的代码

    1. # baidubaike 2 mdict by daming
    2. # [email protected]
    3. require 'rubygems'
    4. require 'hpricot'
    5. require 'pathname'
    6. require 'fileutils'
    7. require 'open-uri'
    8. Maxn=20
    9. max=100
    10. min=1
    11. dic=File.open("baidudic#{min}-#{Maxn*max}.txt","a")
    12. for j in 0..(Maxn-1) do
    13. FileUtils.makedirs("temp")
    14. i=min
    15. while i<max+1 do
    16. url = "http://baike.baidu.com/view/#{i+j*max}.htm"
    17. puts "#{url}"
    18. data=open(url){|f|f.read}
    19. open("temp\\#{i}.htm","wb"){|f|f.write(data)}
    20. puts "download"
    21. i=i+1
    22. end
    23. i=min
    24. while i<max+1 do
    25. puts "#{url}"
    26. url = "http://baike.baidu.com/view/#{i+j*max}.htm"
    27. doc = open("temp\\#{i}.htm") { |f| Hpricot(f) }
    28. title0= (doc/:title).inner_html
    29. title=title0.split('_')
    30. content= (doc/"#lemmaContent").inner_html
    31. temp=content.gsub(/<\/?[^>]*>/, "")
    32. temp=temp.gsub(/编辑本段/, "")
    33. dic.puts title[0]
    34. dic.puts "原文链接:#{url}"
    35. dic.puts temp
    36. dic.puts "</>"
    37. puts "converted"
    38. i=i+1
    39. end
    40. dir = Pathname.new("temp")
    41. dir.rmtree
    42. puts "cache cleaned"
    43. end
    44. dic.close
    复制代码
    windows上ruby地址
    http://rubyforge.org/frs/download.php/29263/ruby186-26.exe
    linux这个不是问题

    一次不要开多个窗口,百度会封

    [ 本帖最后由 发哥 于 2008-10-15 21:12 编辑 ]

    评分

    1

    查看全部评分

  • TA的每日心情
    开心
    2018-10-17 09:01
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    29

    主题

    553

    回帖

    5307

    积分

    版主

    Rank: 10Rank: 10Rank: 10

    积分
    5307

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    2
    发表于 2008-10-15 17:03:49 | 只看该作者
    不错,谢谢楼主
    快速下载时 ,速度大约超过200个/分钟,百度就会封锁ip 10分钟。

    我对ruby不是太了解.
    看楼主程序用意显示为下载百度数据,过滤html标签,转为txt,保存为txt文件。

    该用户从未签到

    6

    主题

    239

    回帖

    1161

    积分

    解元

    Rank: 5Rank: 5

    积分
    1161
    3
    发表于 2008-10-15 17:14:10 | 只看该作者
    不太明白,还是要对发哥的辛苦劳动说声谢谢!
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    4
     楼主| 发表于 2008-10-15 20:01:16 | 只看该作者

    回复 3楼 haoyang2007 的帖子

    就是把这个代码另存为xxx.rb
    安装ruby解析程序
    需要几个下几个。就指定下几个。
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    5
     楼主| 发表于 2008-10-15 20:06:33 | 只看该作者

    回复 2楼 ldlcau 的帖子

    更新了一个,下一些转一些。

    [ 本帖最后由 发哥 于 2008-10-15 21:08 编辑 ]
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    6
     楼主| 发表于 2008-10-16 11:14:29 | 只看该作者
    第二个在服务器上刷刷到12128的时候被封了一会儿。
    好友营 该用户已被删除
    7
    发表于 2008-10-17 00:12:47 | 只看该作者
    发哥可以加上限速的功能吗?
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    8
     楼主| 发表于 2008-10-17 10:43:49 | 只看该作者

    回复 7楼 好友营 的帖子

    貌似openuri没有这个功能,因为http协议本身就没有状态,而且文件太小,速度肯定无法达到满速。
    要限速用外部程序下载吧 比如:
    wget -i http://baike.baidu.com/view/1.htm -limit-rate=50k
    好友营 该用户已被删除
    9
    发表于 2008-10-18 20:27:53 | 只看该作者
    原帖由 发哥 于 2008-10-17 10:43 发表
    貌似openuri没有这个功能,因为http协议本身就没有状态,而且文件太小,速度肯定无法达到满速。
    要限速用外部程序下载吧 比如:
    wget -i http://baike.baidu.com/view/1.htm -limit-rate=50k


    :L 发哥,教教我吧.

    QQ截图未命名.jpg (21.91 KB, 下载次数: 0)

    QQ截图未命名.jpg
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    10
     楼主| 发表于 2008-10-19 03:33:49 | 只看该作者
    不好意思,发错参数了。。
    wget --limit-rate=50k http://baike.baidu.com/view/1.htm
    批量下为1 2 3 需要写bat脚本
    以下是循环100次的。

    1. @echo off
    2. :loop
    3. cls
    4. set /a num+=1
    5. if %num%==101 (
    6. goto exit
    7. )
    8. echo %num%.htm
    9. wget --limit-rate=50k http://baike.baidu.com/view/%num%.htm
    10. goto loop
    11. :exit
    复制代码

    ruby脚本把第一个修改一下。。

    可以用本版版主老大的php采集的方法,是最上道的。后台全是微软干,不需要你弄。

    [ 本帖最后由 发哥 于 2008-10-19 03:36 编辑 ]
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    11
     楼主| 发表于 2008-10-19 03:41:24 | 只看该作者
    其实我还写了一个分页处理程序,初衷是做baidu百科精选词条的。

    可惜baidu的观礼员太懒,至今只推荐了5k个。应该让管理员打他PP了。:lol
    好友营 该用户已被删除
    12
    发表于 2008-10-19 11:16:14 | 只看该作者
    还是弄不懂.试了下用teleport pro,不会用;用迅雷太慢了.并且现在还找不到那个DSL complier:L
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    13
     楼主| 发表于 2008-10-19 15:33:08 | 只看该作者
    好友营 该用户已被删除
    14
    发表于 2008-10-19 17:05:43 | 只看该作者
    慢慢消化一下.:)
    好友营 该用户已被删除
    15
    发表于 2008-10-20 09:47:37 | 只看该作者
    看来我的水平还是玩不转这个了:L .各位大大可以把你们采到的TXT原始文件放到网上吗?或有没有工具把mdx转回TXT的?
  • TA的每日心情
    开心
    2018-10-17 09:01
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    29

    主题

    553

    回帖

    5307

    积分

    版主

    Rank: 10Rank: 10Rank: 10

    积分
    5307

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    16
    发表于 2008-10-21 08:46:22 | 只看该作者
    不知道你要TXT原始文件用来做什么。
    原始文件有近3个G,直接操作处理都很麻烦。
    好友营 该用户已被删除
    17
    发表于 2008-10-21 20:49:23 | 只看该作者
    我用你教的wget在采了,但abbyy lingvo的编译器的容错性很差,整理非法字符,处理过长的段把我搞得头都大了,前10000条(采下来有4000多是空的)只能成功了2700多条:Q
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    18
     楼主| 发表于 2008-10-22 14:34:46 | 只看该作者
    把那个ruby装上。
    用这个脚本处理试试成功率

    1. require 'rubygems'
    2. require 'hpricot'
    3. require 'open-uri'
    4. max=200
    5. min=1
    6. dic=File.open("baidudic#{min}-#{max}.txt","a")
    7. while min<max+1 do
    8. url = "#{min}.htm"
    9. puts "#{url}"
    10. filetemp=File.open(url)
    11. doc= Hpricot(filetemp)
    12. title0= (doc/:title).inner_html
    13. title=title0.split('_')
    14. content= (doc/"#lemmaContent").inner_html
    15. temp=content.gsub(/<\/?[^>]*>/, "")
    16. temp=temp.gsub(/编辑本段/, "")
    17. dic.puts title[0]
    18. dic.puts "原文链接:#{url}"
    19. dic.puts temp
    20. dic.puts "</>"
    21. puts "OK"
    22. min=min+1
    23. filetemp.close
    24. end
    25. dic.close
    复制代码

    [ 本帖最后由 发哥 于 2008-10-22 14:39 编辑 ]
  • TA的每日心情
    开心
    2018-7-19 02:16
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    213

    主题

    1686

    回帖

    2万

    积分

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    积分
    28047

    灌水大神章小蜜蜂章笑傲江湖章管理组专用章

    19
     楼主| 发表于 2008-10-22 14:53:29 | 只看该作者
    abbyy的没用过。。
    貌似是这样的格式吧
    name
    [m1]xxxx
    xxxx
    [/m]

    1. require 'rubygems'
    2. require 'hpricot'
    3. require 'open-uri'
    4. max=200
    5. min=1
    6. dic=File.open("baidudic#{min}-#{max}.txt","a")
    7. while min<max+1 do
    8. url = "#{min}.htm"
    9. puts "#{url}"
    10. filetemp=File.open(url)
    11. doc= Hpricot(filetemp)
    12. title0= (doc/:title).inner_html
    13. title=title0.split('_')
    14. content= (doc/"#lemmaContent").inner_html
    15. temp=content.gsub(/<\/?[^>]*>/, "")
    16. temp=temp.gsub(/编辑本段/, "")
    17. dic.puts title[0]
    18. dic.puts "[m1]"
    19. dic.puts "原文链接:#{url}"
    20. dic.puts temp
    21. dic.puts "[/m]"
    22. puts "OK"
    23. min=min+1
    24. filetemp.close
    25. end
    26. dic.close
    复制代码
    有没有词条长度说明请都回复帖子。。我试试,我也不熟。
    好友营 该用户已被删除
    20
    发表于 2008-11-4 16:57:50 | 只看该作者
    不好意思,现在才回帖。
    abbyy的格式是这样的:

    词条名1
    “tab缩进”[trn]词条正文
    “tab缩进”词条正文
    ........
    “tab缩进”词条正文[/trn]
    词条名2
    “tab缩进”[trn]词条正文
    “tab缩进”词条正文
    ........
    (tab)词条正文[/trn]

    每行的词条有长度限制,具体大概为300字符(150汉字)
    [ ]\{*#为控制字符,如果要在内容中使用,就前面加\,如\[,\\,\]。

    [ 本帖最后由 好友营 于 2008-11-4 16:59 编辑 ]

    该用户从未签到

    0

    主题

    1

    回帖

    0

    积分

    白身

    Rank: 1

    积分
    0
    21
    发表于 2008-11-13 01:22:08 | 只看该作者

    支持,应该建立网格让大家一起出力加速更新

    一个人开太快太多就会被封一段时间,把这个工作分成多份,让比较可靠的高级别用户一起来做这件事可能会方便些.不会让一个人落入地狱,不会让更新变慢....
    发起者开帖子,设立分段,参加者报名加入,每人每星期运行一次程序,开几千个页面,一个人可申请多个段以增加效率,结果反馈给发起者,发起者整合输出.发起者负责管理,如参加者要求退出或者没完成任务,管理者对分段重新分配.
    发起者最好提供FTP空间给上传者临时使用.
    程序最好是VBS(Windows下用),又可编辑又可运行,每分钟开20个页面然后暂停,这样几小时之内应该都不会被封.这种强度对机器也没什么影响,完全可以全天运行,10小时就是12000条....这样大家分段不重复,还可以"同时"进行,提高些效率.
    程序可以附带一个INI,保存本段参数,不同参与者下载不同的Ini(网页Java生成也好)或者手动设置,配合程序自动完成分段的任务,最好结果能自动上传到发起者的邮箱:).......

    [ 本帖最后由 pplang 于 2008-11-13 01:33 编辑 ]