掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 71164|回复: 32

[教程] 百度百科mdict版制作方法,支持批量文本导入和图片下载

[复制链接]
  • TA的每日心情
    开心
    2018-10-17 09:01
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2008-10-6 09:42:44 | 显示全部楼层 |阅读模式
    本帖最后由 ldlcau 于 2010-3-15 08:23 编辑 1 \! L1 K" N1 x' q
    ) }9 l8 Z  n& f- c0 T
    修改了三个文件 见附件baike-2010-3-10.rar   " w5 @' q1 L* ~  j" r% [( }
    增加文件bk3.asp用于更新现有数据。设置更新的词条最少编辑次数,编辑次数(gxcs)超过此的则更新,请修改表baike添加字段ygx,类型int.
    3 r6 u" E+ C5 _7 g/ {表结构有变动,请按照建表语句来建表% }' F4 K+ A* a
    由于百度百科经常更换样式,下载百度百科可能会出现无法下载的现象,请修改bk2.asp。8 O' E6 s8 U2 w9 a- G6 j
    % b" W5 _7 }; w7 t. y1 p
    建表语句
    & M6 c7 u: T& S& O$ vCREATE TABLE [dbo].[baike] (
    / H# X5 Z7 `. m4 j5 h' n1 a        [id] [int] IDENTITY (1, 1) NOT NULL ,4 p$ K( q, u! {" x. ?  {
            [title] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
    * m7 r9 b4 Z7 Z$ S3 B$ f        [leibie] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    $ ?8 M* J3 P  f        [content] [text] COLLATE Chinese_PRC_CI_AS NULL ,4 J/ m* G4 u, t2 c
            [gx] [smallint] NULL ,7 n! r0 O' I3 C: {( g( s( t
            [bid] [int] NULL ,
    # y# l) S& R$ q3 D. J1 N, X! A        [ispic2] [smallint] NULL ,
    7 P  ?5 T4 P9 H& z( b9 D: v        [gxtime] [datetime] NULL ,
    / G: q- C, b* T0 I: Q7 ^" a+ E        [bjtime] [datetime] NULL ,
    8 `: a4 A9 [0 r6 w  K; \        [gxcs] [int] NULL ,
    $ u( a1 z  k. A2 X, f        [bangzhu] [int] NULL ,
    ; i) ~: s# b0 `* Y: r8 X  \5 o, c/ k        [ispic] [int] NULL ," y/ _: }9 ]' s9 |  n) A
            [tz] [int] NULL ,4 l1 c8 k3 K& k8 G
            [pid] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,0 d" l8 X# O# M' h9 H
            [yc] [int] NULL
    ; p. t8 @- |- p5 Q" K0 ~/ Q         [ygx] [int] NULL
    4 K) t6 u+ D5 |* T# d" k) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]. l- P* A" q- b" f
    修改了部分内容,发现运行中有错误的请重新下载.- F$ V: i/ ^% T- ^8 T% {3 x3 T
       支持批量文本导入,可以建立个人的百科。7 l3 P$ e0 A) n% ]* ~5 Z2 G7 _/ z
    ) N8 I8 T5 h! |4 {  ?# m
      最后修改时间:2010-3-15
    / @% L0 A8 {: [0 i. l6 x& K2 g" L9 O, V
    需要环境:sqlserver2000+iis % Y. H8 u" D  ~' A
    下载更新百度百科, 硬盘空间最少6G,NTFS格式。网络环境:保证24小时不间断。(仅仅是个人数据库不需要)7 n# e" y, s7 P6 _4 K% w3 K
    + h( V1 u* Q- M
    制作方法:& ^3 u( P+ f( ~/ B; d1 D% g2 |) b1 [

    / N4 T7 X( T* U4 v- _& }本程序除可以下载更新百度百科外,也支持批量导入文本文件,建立个人的数据库。- S; I- n+ p# ]6 D6 x; j! z) S
    一、建立两个网页服务器
    . q2 v6 o2 F& v, a; L1 Whttp://127.0.0.1 正常浏览网页所用的服务器
    7 `; l9 b" S! a; m. _3 j( j) mhttp://127.0.0.1:111 更新数据的 iis服务器,注意在server服务器版操作系统才支持建立多个web服务器(仅仅是个人数据库不需要)  `7 J6 g7 Q3 o  h2 O4 [& ^
    都指向同一目录* v5 z- P) K: z$ ]
    index.asp 首页、浏览、添加、修改、检索
    " l9 k9 \9 i  [! wbk2.asp 或 index3.asp 更新百科数据文件(仅仅是个人数据库不需要,可以删除)
    8 |" {1 Z7 k) ?  vdsn.asp 数据库连接文件
    + g4 X+ w4 B: E' t8 Cjs.xml 保存更新进度数据,注意ntfs下要设置为所有成员均可修改/ Y: K* N3 b0 L" P( l  x& L
    , z8 X; G) I, G5 ?0 e2 {" w5 \
    二、建表 ' ^! J! @# Y/ ]# Q' p% n
    表名 baike 参见上面的建表语句5 r( y$ M4 f  l6 Z3 g
    sql安装时验证方式要采用混合模式% f' d3 J% {- ^/ {7 v
    请注意一定要把数据库和日志设在ntfs分区,数据库大小不限,要保证剩余磁盘空间大于6G。4 b! O. O( H) h$ \/ D; R
    数据库设置里设为自动收缩数据库文件。
    * L% ?7 X' z2 w  \% t* I$ D- Z(也可利用查询分析器导入baike.sql)) M3 H: j' v+ x

    # w) X+ m+ h1 c$ p1 d+ U三、下载更新数据(仅仅是个人数据库不需要)
    0 G3 S& @, ^6 }7 N. d; O- [http://127.0.0.1:111/index3.asp更新数据,更新过程中请不要关闭index3.asp。
    0 H) G, |( y4 n" s6 A5 U  @如果下载数据出错,请检查bk2.asp,使用response.end命令检查输出是否正确。
    $ [) ?8 e# t2 p2 W, v& l! G可以批量导入txt文件或htm文件,txt文件或htm文件放在网站txt目录下,可以一次性导入多条txt文件或htm文件,txt文件或htm文件的标题作为title,txt文件的内容写入content。导入前请用工具将文件名改为中文。
    / d( s  \$ m$ v

      u  V3 O& I7 c   支持图片下载,需要下载图片时,将bk2.asp中的qt=0改为qt=1即可。+ |( R) d" }! l7 {7 ~8 Z
    - r9 r6 u5 e2 k. f$ J7 {% B+ l
    四、导出txt
    . {) }9 r- j3 D! _选择导出到txt,选择用一条查询命令导出数据,0 f' {& H: V; |6 z& x1 u: t& v
    输入查询语句:“ select title,content from baike where not(title like '%/%') ”(不含引号)7 i; x$ {' M* {) q8 O& W
    下一步中,文件类型选ansi或者unicode,列分隔符选制表符,文本限定符选<无>。$ v  F; p; C3 D% x
    点击转换,选择转换。点击转换选项,使用下面的转换语句:
    : G2 v4 y' C( J. s* XFunction Main()
    3 A1 \- F& e% @* hDTSDestination("title") = replace(replace(trim(DTSSource("title")),chr(9),""),chr(10),"")&vbcrlf/ h  Y* S- e* g5 X. h, {: s3 ]
    DTSDestination("content") = replace(DTSSource("content"),"</>","")&vbcrlf&"</>"
    * y8 G  [1 j3 n6 sMain = DTSTransformStat_OK
    2 v! P2 k& m  h! b* v* a& DEnd Function
    * c$ a- u* K0 L0 e; `/ Y
    确定后导出。1 T% g. u6 B& S: N
    --------------& D( Q/ ~3 X1 k. K$ x4 x: ~% Y
    ------------) H6 l% E( V- g2 h
    导出带图片的内容方法
    * C4 r' [* E8 z0 Y6 ]在企业管理器图形界面执行1 Z/ \+ Q8 n8 l% A* V3 i0 u
    1、选择导出到txt,选择用一条查询命令导出数据,导出sql语句5 c( W" i  @- }  j! B3 A5 ~7 H
    ===================================
    & A- G  V' ^/ H% ?, a' xselect title,bid,ispic,pid,content from baike where not(title like '%/%')
    5 c9 i: N% \1 I4 B- S* F
    ===================================
    0 y2 o8 V! b( T; k" x2、
    7 r7 j! c2 z8 k下一步中,文件类型选ansi或者unicode,列分隔符选制表符,文本限定符选<无>。0 _0 g/ N" y4 J; G& ^( ?" U
    点击转换,选择转换。点击转换选项,使用下面的转换语句:# L# ~7 B( e! \+ t& n
    ===================================
    , \+ j* U1 [# X4 L4 QFunction Main()
    6 i  }" k5 i0 E0 x4 w3 |2 ^DTSDestination("title") = UTF2GB(Replace(Replace(trim(DTSSource("title")),chr(9),""),chr(10),""))&vbcrlf& I: ~  W8 K. P+ }5 l
    DTSDestination("content") =HTMLEncode6(DTSSource("content"),DTSSource("ispic"),DTSSource("bid"),DTSSource("pid"))&vbcrlf&"</>"
    8 E2 n* g7 ?" H+ j- T; I( H6 f. AMain = DTSTransformStat_OK
    4 k4 l" A8 [4 J, \) O3 sEnd Function

    # f0 x# P3 s7 L3 w4 m* Ufunction HTMLEncode6(fString,ispic,bid,pid)( i) E* t5 z8 y0 B" H* a: U
    if isnull(fString) or fString="" then. u( Q8 F" ~; Q# Q
    HTMLEncode6 =" "9 p( D/ n% k+ H! e# a+ N
    exit function
    $ z# Z- Y( c/ r& |6 bend if0 M* w* u/ i) g6 `# F$ j: X; O
    if isnull(ispic) or ispic="" then ispic=0+ ]& u- w7 ^( u; \3 T
    if isnull(bid) or bid="" then bid=13 W7 z0 e$ W$ ~+ t0 t  |9 a
    if isnull(pid) then pid=""$ u7 l" U/ J6 w  j
    fString=trim(fString); L. P+ F4 M( Y- q- a# s% v
    fString ="|||||"&fString
    - S& w; n) u% e$ F2 A. Q9 mfString = Replace(fString, "|||||<br>     <br>","")/ ^9 F3 e& f: g; X
    fString = Replace(fString, "|||||","")+ k8 S! s- Z0 J/ [: B  ^. |
    fString = Replace(fString, "</>", "")' N$ Z. B% g4 O9 n: `
    fString = Replace(fString, "<a href=#", "<A HREF=entry://#")8 l* Z" K- P0 I9 \2 H
    fString = Replace(fString, " >", ">")
    9 i$ [, d2 K* D  A! \fString = Replace(fString, "<br> <br>","")  F: z7 c, D0 [, t  F/ \" k
    fString = Replace(fString, "<br>     <br>","<br>")1 U1 c" w/ R7 k
    fString = Replace(fString, "<br><br>","<br>")
    & I4 U: }2 |+ Pif ispic=1  then) L" S' m$ \' W' u0 `6 K
    fString ="<img src="&CHR(34)&"
    file:///down/"&int(trim(bid)/10000)&"/"&trim(bid)&".jpg"&CHR(34)&" border=0><br>"&fString
    3 w2 H$ i1 J& b; F2 e# T8 b2 Aelseif ispic=2 then$ }' G8 Q8 t1 A" }, z+ U
    fString ="<img src="&CHR(34)&"
    file:///down2/"&trim(pid)&".jpg"&CHR(34)&" border=0><br>"&fString
    0 b1 M0 N/ |6 ?6 S4 o9 Z; }. Wend if
    , u) j- L2 a; q" }1 V! uHTMLEncode6 = fString
    9 x  `( C. e  Eend function4 S* c) `1 u7 o( E# `# p% I% T6 g
    function UTF2GB(UTFStr)) ~, }" |1 ^) |: \, ~
    tempUTFStr=UTFStr- f2 w2 [) P/ M! @. T  f
    UTFStr=replace(UTFStr,"&","&")
    4 j, @0 A1 }, I! P# A) B5 nUTFStr=replace(UTFStr,"&#12539;","·")3 E& O, h# p4 K, M. u
    UTFStr=replace(UTFStr,"&#8231;","·")
    - @! J2 I7 d6 c. u# e3 hUTFStr=replace(UTFStr,"'","’")7 S# v6 }& O! s3 k4 d$ A0 K0 @
    UTFStr=replace(UTFStr,"&#8206;","")
    + a) m+ ]$ X) A" V# ?if len(trim(UTFStr))>0 then
    4 c1 H+ q# q- O% P) ^$ N! uUTF2GB=UTFStr# N+ t5 b7 G0 d3 k, Y
    else8 n3 }# r# S' X% I  m; a# }
    UTF2GB=tempUTFStr+ i1 f2 u# t1 Z( |4 g* ?; @
    end if- F) P& m6 R- B9 {2 V
    end function
    , o2 _# |3 j- m9 }' ~
    ===================================
    # X. v- y# F, |' Z6 ?3.转换辞典
    7 ]6 L& @! y  a; i制作图片文件时将图片文件夹下的那个隐藏文件Thumbs.db文件删除
      h( R8 v+ i8 ]2 _在使用MdxBuilder制作词库时,将Data路径指向上面存放数据的目录,该目录中的
    ( g) S: v9 f7 N所有文件都会被压缩到后缀名为.mdd文件中,使用时该.mdd文件应当与.mdx文件在同一目录下
    . B* A- V1 y0 a
    3 c+ c) ~, q/ _( H4 n五、转换mdict9 l+ M. P  S) z1 ]6 B+ R9 x5 j* z
    原始格式:选mdict(html)
    ; k. s' D. W) E) w( ?( p4 o, ^2 g8 |, B. m/ i
    编码方式:
    0 ^' n! j, |0 @& d1 a8 K文件类型ansi,编码方式选GBK- ~. D% u) R8 X. L0 C0 w  v! n
    文件类型unicode,编码方式选utf-16
    5 M# I# N+ i, n5 X1 L即可) [  }. g% A' l7 S7 U

    2 t$ G. f% `: S9 D: j3 s六、清除临时文件(仅仅是个人数据库不需要)' a% W. d" f, e) h& i% f
    更新数据时,会在系统盘windows/temp下产生临时ie文件,请定时删除
    . M: d3 S) q/ Y5 T3 F' {+ `' X( ^2 ?$ X& {5 W  Z
    七、收缩数据库日志文件(数据库不是太大没必要进行)
    2 ^. l6 [( T: O1 \4 v( B% W收缩数据库文件(如果不压缩,数据库的文件不会减小)/ q& i; o/ n' s/ m
    查询管理器里执行
    ( ^& u/ o3 K: G- QDUMP  TRANSACTION  库名  WITH NO_LOG
    + f5 h) w# V+ i. G) h$ y5 HBACKUP LOG 数据库名 WITH NO_LOG
    + U5 d7 k! W+ E然后
    * ?/ z1 m8 I3 q' q企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
    , W* L! J! @9 e  k7 v--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
    ' i6 r0 k9 N. x! b  i--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
    $ v0 s( `0 @2 M. \* {# \9 H; K4 Q2 Z) R+ o: f
    八、导出时删除标题重复的数据
    5 d! V" G# s) z* \5 d9 F8 ?7 Nselect title,content from baike where id  in(SELECT MAX(id) AS id FROM baike  GROUP BY title)
    ! d( N0 ~3 L- g1 _3 N- b. D# m9 J- o  K$ U' W$ F4 Q
    [ 本帖最后由 ldlcau 于 2009-1-6 10:11 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x

    评分

    1

    查看全部评分

    lin_5151 该用户已被删除
    发表于 2008-10-6 18:15:36 | 显示全部楼层
    虽然不太懂,但还是要顶地。
    eugene 该用户已被删除
    发表于 2008-10-7 08:58:26 | 显示全部楼层
    学习了。

    该用户从未签到

    发表于 2008-10-8 13:59:14 | 显示全部楼层
    支持一下,慢慢体会,谢谢老大分享好经验!!!

    该用户从未签到

    发表于 2008-10-10 00:13:45 | 显示全部楼层

    顶顶顶

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

    [LV.4]偶尔看看III

     楼主| 发表于 2008-10-11 09:16:11 | 显示全部楼层
    添加了图片,更新了部分网页文件,以前下载的请重新下载。
    " I) a5 F1 `! k支持批量文本导入,可以建立个人的百科。
  • TA的每日心情
    开心
    2018-10-17 09:01
  • 签到天数: 18 天

    [LV.4]偶尔看看III

     楼主| 发表于 2008-10-11 14:32:51 | 显示全部楼层
    漏掉了一个文件,已经放上5 v6 Q# s/ E+ i! z  F. P
    请重新下载。
  • TA的每日心情
    开心
    2018-10-17 09:01
  • 签到天数: 18 天

    [LV.4]偶尔看看III

     楼主| 发表于 2008-10-14 10:40:48 | 显示全部楼层
    支持图片下载,需要下载图片时,将bk2.asp中的qt=0改为qt=1即可。
    2 d2 \+ i0 ^) K& \# Q8 J, }4 ?图片保存在down文件夹下

    该用户从未签到

    发表于 2008-11-19 16:42:09 | 显示全部楼层
    支持:) :)

    该用户从未签到

    发表于 2008-12-8 10:10:53 | 显示全部楼层
    看得我云里雾里的。。。学 习了!

    该用户从未签到

    发表于 2009-1-4 16:52:40 | 显示全部楼层
    谢谢LZ:loveliness:
    eugene 该用户已被删除
    发表于 2009-1-6 08:26:15 | 显示全部楼层
    原帖由 ldlcau 于 2008-10-11 09:16 发表
    + E1 u( `, A% Q$ G% B) z% |$ j添加了图片,更新了部分网页文件,以前下载的请重新下载。
    - m# U) ^) _6 O+ O- J5 |  ?支持批量文本导入,可以建立个人的百科。

    3 h1 V4 Y# u* T, e
    8 t6 n- S( H- {8 }, v, L) @个人百科,添加也是这样么?
  • TA的每日心情
    开心
    2018-10-17 09:01
  • 签到天数: 18 天

    [LV.4]偶尔看看III

     楼主| 发表于 2009-1-6 10:06:50 | 显示全部楼层
    个人百科可以通过文本文件批量导入

    该用户从未签到

    发表于 2009-1-6 11:45:04 | 显示全部楼层
    IZ麻烦你给出个《百度知道》的制作方法,如果有百度百科和百度知道这两本字典,那真的无敌了。:lol

    该用户从未签到

    发表于 2009-1-13 10:02:07 | 显示全部楼层
    IZ麻烦你给出个《百度知道》的制作方法,如果有百度百科和百度知道这两本字典,那真的无敌了。
    ( E6 Y5 O6 P- Q+ b
    5 O( L# X7 R% ^" ?:D :D
  • TA的每日心情
    开心
    2018-10-17 09:01
  • 签到天数: 18 天

    [LV.4]偶尔看看III

     楼主| 发表于 2009-1-13 10:41:47 | 显示全部楼层
    百度知道 方法类似8 u$ S. O4 l3 v1 R( g+ X
    下载数据- 转换数据- 导入数据 -制作

    该用户从未签到

    发表于 2009-1-20 18:24:43 | 显示全部楼层
    严重看不懂,偶果然是菜鸟呀

    该用户从未签到

    发表于 2009-3-9 11:42:18 | 显示全部楼层
    楼主真是神人啊....

    该用户从未签到

    发表于 2009-3-30 22:04:29 | 显示全部楼层
    正在用,很好很强大!!

    该用户从未签到

    发表于 2009-6-7 10:13:44 | 显示全部楼层
    太麻烦了

    该用户从未签到

    发表于 2009-6-13 01:07:30 | 显示全部楼层
    谢谢  支持呀

    该用户从未签到

    发表于 2009-7-22 23:46:28 | 显示全部楼层
    反复用了好几次还是下载不了,想制作一个只包括“科学”的个人百度,请帮助我啊,继续学习SQL

    该用户从未签到

    发表于 2009-7-23 01:41:05 | 显示全部楼层
    Interesting!

    该用户从未签到

    发表于 2009-7-25 09:41:31 | 显示全部楼层
    外行看内行,真的一头雾水!:L
  • TA的每日心情
    开心
    2018-10-17 09:01
  • 签到天数: 18 天

    [LV.4]偶尔看看III

     楼主| 发表于 2009-12-9 13:19:51 | 显示全部楼层
    默认bk2.asp取图打开
    - `8 e0 m: I. o. h2 B如果是未取得数据把bk2.asp0 c% C6 u, `7 d$ C2 x! m
    <META content="60; URL=bk2.asp" http-equiv=Refresh>
    4 I! B! C. F8 o中的60改大一些,<META content="90; URL=bk2.asp" http-equiv=Refresh>
    ) c( r" e0 w; c看看
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-4-7 05:52 , Processed in 0.030338 second(s), 32 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表