又一个百度百科制作工具。
如果不想要图片和链接的可以用我瞎写的ruby脚本。:lolmax代表最大号,min是最小, 从1开始,每天想处理多少就处理多少,也可以放到服务器上全部处理成一个文件。
低网速情况的代码require 'rubygems'
require 'hpricot'
require 'open-uri'
max=200
min=1
dic=File.open("baidudic#{min}-#{max}.txt","a")
while min<max+1 do
url = "http://baike.baidu.com/view/#{min}.htm"
puts "#{url}"
doc= Hpricot(open(url))
title0= (doc/:title).inner_html
title=title0.split('_')
content= (doc/"#lemmaContent").inner_html
temp=content.gsub(/<\/?[^>]*>/, "")
temp=temp.gsub(/编辑本段/, "")
dic.puts title
dic.puts "原文链接:#{url}"
dic.puts temp
dic.puts "</>"
puts "OK"
min=min+1
end
dic.close
高网速情况的代码
# baidubaike 2 mdict by daming
# [email protected]
require 'rubygems'
require 'hpricot'
require 'pathname'
require 'fileutils'
require 'open-uri'
Maxn=20
max=100
min=1
dic=File.open("baidudic#{min}-#{Maxn*max}.txt","a")
for j in 0..(Maxn-1) do
FileUtils.makedirs("temp")
i=min
while i<max+1 do
url = "http://baike.baidu.com/view/#{i+j*max}.htm"
puts "#{url}"
data=open(url){|f|f.read}
open("temp\\#{i}.htm","wb"){|f|f.write(data)}
puts "download"
i=i+1
end
i=min
while i<max+1 do
puts "#{url}"
url = "http://baike.baidu.com/view/#{i+j*max}.htm"
doc = open("temp\\#{i}.htm") { |f| Hpricot(f) }
title0= (doc/:title).inner_html
title=title0.split('_')
content= (doc/"#lemmaContent").inner_html
temp=content.gsub(/<\/?[^>]*>/, "")
temp=temp.gsub(/编辑本段/, "")
dic.puts title
dic.puts "原文链接:#{url}"
dic.puts temp
dic.puts "</>"
puts "converted"
i=i+1
end
dir = Pathname.new("temp")
dir.rmtree
puts "cache cleaned"
end
dic.close
windows上ruby地址
http://rubyforge.org/frs/download.php/29263/ruby186-26.exe
linux这个不是问题
一次不要开多个窗口,百度会封
[ 本帖最后由 发哥 于 2008-10-15 21:12 编辑 ] 不错,谢谢楼主
快速下载时 ,速度大约超过200个/分钟,百度就会封锁ip 10分钟。
我对ruby不是太了解.
看楼主程序用意显示为下载百度数据,过滤html标签,转为txt,保存为txt文件。 不太明白,还是要对发哥的辛苦劳动说声谢谢!
回复 3楼 haoyang2007 的帖子
就是把这个代码另存为xxx.rb安装ruby解析程序
需要几个下几个。就指定下几个。
回复 2楼 ldlcau 的帖子
更新了一个,下一些转一些。[ 本帖最后由 发哥 于 2008-10-15 21:08 编辑 ] 第二个在服务器上刷刷到12128的时候被封了一会儿。 发哥可以加上限速的功能吗?
回复 7楼 好友营 的帖子
貌似openuri没有这个功能,因为http协议本身就没有状态,而且文件太小,速度肯定无法达到满速。要限速用外部程序下载吧 比如:
wget -i http://baike.baidu.com/view/1.htm -limit-rate=50k 原帖由 发哥 于 2008-10-17 10:43 发表 https://pdawiki.com/images/common/back.gif
貌似openuri没有这个功能,因为http协议本身就没有状态,而且文件太小,速度肯定无法达到满速。
要限速用外部程序下载吧 比如:
wget -i http://baike.baidu.com/view/1.htm -limit-rate=50k
:L 发哥,教教我吧. 不好意思,发错参数了。。
wget --limit-rate=50k http://baike.baidu.com/view/1.htm
批量下为1 2 3 需要写bat脚本
以下是循环100次的。
@echo off
:loop
cls
set /a num+=1
if %num%==101 (
goto exit
)
echo %num%.htm
wget --limit-rate=50k http://baike.baidu.com/view/%num%.htm
goto loop
:exit
ruby脚本把第一个修改一下。。
可以用本版版主老大的php采集的方法,是最上道的。后台全是微软干,不需要你弄。
[ 本帖最后由 发哥 于 2008-10-19 03:36 编辑 ] 其实我还写了一个分页处理程序,初衷是做baidu百科精选词条的。
可惜baidu的观礼员太懒,至今只推荐了5k个。应该让管理员打他PP了。:lol 还是弄不懂.试了下用teleport pro,不会用;用迅雷太慢了.并且现在还找不到那个DSL complier:L 你就用这个么
https://pdawiki.com/forum/thread-883-1-1.html 慢慢消化一下.:) 看来我的水平还是玩不转这个了:L .各位大大可以把你们采到的TXT原始文件放到网上吗?或有没有工具把mdx转回TXT的? 不知道你要TXT原始文件用来做什么。
原始文件有近3个G,直接操作处理都很麻烦。 我用你教的wget在采了,但abbyy lingvo的编译器的容错性很差,整理非法字符,处理过长的段把我搞得头都大了,前10000条(采下来有4000多是空的)只能成功了2700多条:Q 把那个ruby装上。
用这个脚本处理试试成功率
require 'rubygems'
require 'hpricot'
require 'open-uri'
max=200
min=1
dic=File.open("baidudic#{min}-#{max}.txt","a")
while min<max+1 do
url = "#{min}.htm"
puts "#{url}"
filetemp=File.open(url)
doc= Hpricot(filetemp)
title0= (doc/:title).inner_html
title=title0.split('_')
content= (doc/"#lemmaContent").inner_html
temp=content.gsub(/<\/?[^>]*>/, "")
temp=temp.gsub(/编辑本段/, "")
dic.puts title
dic.puts "原文链接:#{url}"
dic.puts temp
dic.puts "</>"
puts "OK"
min=min+1
filetemp.close
end
dic.close
[ 本帖最后由 发哥 于 2008-10-22 14:39 编辑 ] abbyy的没用过。。
貌似是这样的格式吧
name
xxxx
xxxx
require 'rubygems'
require 'hpricot'
require 'open-uri'
max=200
min=1
dic=File.open("baidudic#{min}-#{max}.txt","a")
while min<max+1 do
url = "#{min}.htm"
puts "#{url}"
filetemp=File.open(url)
doc= Hpricot(filetemp)
title0= (doc/:title).inner_html
title=title0.split('_')
content= (doc/"#lemmaContent").inner_html
temp=content.gsub(/<\/?[^>]*>/, "")
temp=temp.gsub(/编辑本段/, "")
dic.puts title
dic.puts ""
dic.puts "原文链接:#{url}"
dic.puts temp
dic.puts ""
puts "OK"
min=min+1
filetemp.close
end
dic.close
有没有词条长度说明请都回复帖子。。我试试,我也不熟。 不好意思,现在才回帖。
abbyy的格式是这样的:
词条名1
“tab缩进”词条正文
“tab缩进”词条正文
........
“tab缩进”词条正文
词条名2
“tab缩进”词条正文
“tab缩进”词条正文
........
(tab)词条正文
每行的词条有长度限制,具体大概为300字符(150汉字)
[ ]\{*#为控制字符,如果要在内容中使用,就前面加\,如\[,\\,\]。
[ 本帖最后由 好友营 于 2008-11-4 16:59 编辑 ]
支持,应该建立网格让大家一起出力加速更新
一个人开太快太多就会被封一段时间,把这个工作分成多份,让比较可靠的高级别用户一起来做这件事可能会方便些.不会让一个人落入地狱,不会让更新变慢....发起者开帖子,设立分段,参加者报名加入,每人每星期运行一次程序,开几千个页面,一个人可申请多个段以增加效率,结果反馈给发起者,发起者整合输出.发起者负责管理,如参加者要求退出或者没完成任务,管理者对分段重新分配.
发起者最好提供FTP空间给上传者临时使用.
程序最好是VBS(Windows下用),又可编辑又可运行,每分钟开20个页面然后暂停,这样几小时之内应该都不会被封.这种强度对机器也没什么影响,完全可以全天运行,10小时就是12000条....这样大家分段不重复,还可以"同时"进行,提高些效率.
程序可以附带一个INI,保存本段参数,不同参与者下载不同的Ini(网页Java生成也好)或者手动设置,配合程序自动完成分段的任务,最好结果能自动上传到发起者的邮箱:).......
[ 本帖最后由 pplang 于 2008-11-13 01:33 编辑 ]
页:
[1]