内容显示页
 
类别:ASP+VBS | 浏览(134) | 2007-7-31 22:55:38 | 关闭广告

前些天在网上看到QQ上有一篇“35岁前要培养的66种思维”的文章,想放到手机里看,以前的方法是,把每一个页面都保存下来然后再处理,或打开Emeditor一个一个的复制上去,这样算下来这个55篇文章得认认真真的copy 55次,实在是太累了,因为本人比较懒,所以喜欢找简单的方法,

前些天学过的正则及采集想都不带想的就从脑子里蹦出来了,好,就用采集及FSO实现,先分析了一下他的结构,感觉真是太简单了,连查看源代码都不带查的,是有规律的数字组成的链接。想看看究竟的可以上去仔细看看,我是不用看了。

采集的过程是:根据规律生成数字链接--》然后对每页进行分析找出内容、及标题区域,用正则进行匹配并取出--》然后用FSO保存.

别的什么把这些文件组成一个文件,或组成一个txt文件,自己想办法喽,很简单的。(提醒一下,可以用cmd的,type 1.html >>allhtml.html,如果要保存成txt的,可以把allhtml.html打开,然后全选copy到记事本里就行了。)

下边给出采集代码,不会的别找我,很没有技术含量的,不过很经典,采集可以提高工作效率的。保存成“QQ.wsf”


原创作者:柳永法(yongfa365)'Blog


<job id="QQ-35岁前要培养的66种思维-柳永法(yongfa365)'Blog采集的方法">
<script language="vbs">
re_content = "(<div id=""content""[\s\S]+?</div>)"'内容正则
re_title = "(<title>[^ ]*</title>)"'标题正则

For idx = 1 To 55
    url = "http://book.qq.com/s/book/0/5/5245/"& idx &".shtml"'要采集的网站的地址
    Body = getHTTPPage(url)'得到网站内容
    txtContent=RegExpTest(re_title, Body)  & RegExpTest(re_content, Body)'取出网站的标题与内容
 call CreateFile( idx &".html",txtContent)'生成文件
next
msgbox("成功")


'----------------------------------------函数区-----------------------------------------------------


Function RegExpTest(patrn, strng)
    Dim regEx, Match, Matches '建立变量。
    Set regEx = New RegExp '建立正则表达式。
    regEx.Pattern = patrn'设置模式。
    regEx.IgnoreCase = True '设置是否区分字符大小写。
    regEx.Global = True '设置全局可用性。
    Set Matches = regEx.Execute(strng)'执行搜索。
    For Each Match in Matches'遍历匹配集合。
        RetStr = RetStr & "|" & Match.SubMatches(0)
    Next
    RegExpTest = RetStr
End Function


Function getHTTPPage(Path)
    t = GetBody(Path)
    getHTTPPage = BytesToBstr(t, "GB2312")
End Function

Function GetBody(url)
    On Error Resume Next
    Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
    With xmlhttp
        .Open "Get", url, False, "", ""
        .Send
        If xmlhttp.Status<>200 Then Exit Function
        GetBody = .ResponseBody
    End With
    Set xmlhttp = Nothing
End Function

Function BytesToBstr(Body, Cset)
    On Error Resume Next
    Dim objstream
    Set objstream = CreateObject("adodb.stream")
    objstream.Type = 1
    objstream.Mode = 3
    objstream.Open
    objstream.Write Body
    objstream.Position = 0
    objstream.Type = 2
    objstream.Charset = Cset
    BytesToBstr = objstream.ReadText
    objstream.Close
    Set objstream = Nothing
End Function

Function CreateFile(FileName, Content)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fd = FSO.CreateTextFile(FileName, True)
    fd.WriteLine Content
End Function

</script>
</job>


引用本页地址:http://www.yongfa365.com/item/QQ-Before-35-age-Need-Culture-66-Method-Collect-yongfa365.html
 
 
相关链接
 
网友评论:
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片看不清? 换张图试试
 
   
 
 
文章分类
 
   

Power by :柳永法(yongfa365)'Blog | Model by :hibaidu | CSS by:众网友 | 京ICP备07011491号  QQ:64049027  E-mail:64049027qq.com

本空间赞助商:北京中科兴联信息技术有限公司