广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    写了段批量抓取某个列表页的东东

    2018-05-08 11:29:35 次阅读 稿源:互联网
    零七广告
    有些人当抓取程序是个宝,到目前还TND有人在卖钱,强烈BS一下这些家伙 真是的!可能偶下边这段东西比较烂哈
    下边这个没有写入库功能,已经到这一步了,入库功能是很简单的事了,需要的请自己去完成吧,其它功能各位自行完善吧!把代码拷贝过去直接运行即可看到效果

    Dim Url,List_PageCode,Array_ArticleID,i,ArticleID
    Dim Content_PageCode,Content_TempCode
    Dim Content_CategoryID,Content_CategoryName,BorderID,ClassID,BorderName,ClassName
    Dim ArticleTitle,ArticleAuthor,ArticleFrom,ArticleContent

    Url = "http://www.webasp.net/article/class/1.htm"
    List_PageCode = getHTTPPage(Url)
    List_PageCode = RegExpText(List_PageCode,"打印</th></tr>","</table><table border=0 cellpadding=5",0)
    List_PageCode = RegExpText(List_PageCode,"<td align=left><a href='../","'><img border=0 src='../images/authortype0.gif'",1)    '取得当前列表页的文章链接,以,分隔
    Array_ArticleID = Split(List_PageCode,",")    '创建数组,存储文章ID

    For i=0 To Ubound(Array_ArticleID)-1
        ArticleID = Array_ArticleID(i)    '文章ID
        Content_PageCode = getHTTPPage("http://www.webasp.net/article/"&ArticleID)    '取得文章页的内容

        '=========取文章分类及相关ID参数 开始=======================
        Content_TempCode = RegExpText(Content_PageCode,"<a href=""/article/"">技术教程</a> >> ",">> 内容</td>",0)
        Content_CategoryID = RegExpText(Content_PageCode,"<a href='../class","/'>",1)
        BorderID = Split(Content_CategoryID,",")(0)    '大类ID
        ClassID = Split(Content_CategoryID,",")(1)    '子类ID
            '==========检查大类是否存在 开始===============
            '如果不存在则入库

            '==========检查大类是否存在 结束===============
        'Response.Write(BorderID & "," & ClassID & "<br />")
        Content_CategoryName = RegExpText(Content_PageCode,"/'>","</a>",1)
        BorderName = Split(Content_CategoryName,",")(0)    '大类名称
        ClassName = Split(Content_CategoryName,",")(1)    '子类名称
            '==========检查子类是否存在 开始===============
            '如果不存在则入库

            '==========检查子类是否存在 结束===============
        '=========取文章分类及相关ID参数 结束=======================

        '=========取文章标题及内容 开始=============================
        ArticleTitle = RegExpText(Content_PageCode,"<tr><td align=center bgcolor=#DEE2F5><strong>","</strong></td></tr>",0)
        ArticleAuthor = RegExpText(Content_PageCode,"<tr><td><span class=blue>作者:</span>","</td></tr>",0)
        ArticleFrom = RegExpText(Content_PageCode,"<tr><td><span class=blue>来源:</span>","</td></tr>",0)
        ArticleContent = RegExpText(Content_PageCode,"<tr><td class=content style=""WORD-WRAP: break-word"" id=zoom>","</td></tr>"&VBCrlf&"        </table>"&VBCrlf&"    </td></tr></table>",0)
        '=========取文章标题及内容 结束=============================
        Response.Write(ArticleTitle& "<br /><br />")
        Response.Flush()
    Next


    附几个函数:
    Function getHTTPPage(url) 
        IF(IsObjInstalled("Microsoft.XMLHTTP") = False)THEN
            Response.Write "<br><br>服务器不支持Microsoft.XMLHTTP组件" 
            Err.Clear
            Response.End
        END IF
        On Error Resume Next
        Dim http 
        SET http=Server.CreateObject("Msxml2.XMLHTTP") 
        Http.open "GET",url,False 
        Http.send() 
        IF(Http.readystate<>4)THEN
            Exit Function 
        END IF 
        getHTTPPage=BytesToBSTR(Http.responseBody,"GB2312")
        SET http=NOTHING
        IF(Err.number<>0)THEN
            Response.Write "<br><br>获取文件内容出错" 
            'Response.End
            Err.Clear
        END IF  
    End Function

            
    Function BytesToBstr(CodeBody,CodeSet)
        Dim objStream
        SET objStream = Server.CreateObject("adodb.stream")
        objStream.Type = 1
        objStream.Mode =3
        objStream.Open
        objStream.Write CodeBody
        objStream.Position = 0
        objStream.Type = 2
        objStream.Charset = CodeSet
        BytesToBstr = objStream.ReadText 
        objStream.Close
        SET objStream = NOTHING
    End Function

    '================================================
    '作  用:检查组件是否已经安装
    '返回值:True  ----已经安装
    '        False ----没有安装
    '================================================
    Function IsObjInstalled(objName)
        On Error Resume Next
        IsObjInstalled = False
        Err = 0
        Dim testObj
        SET testObj = Server.CreateObject(objName)
        IF(0 = Err)THEN IsObjInstalled = True
        SET testObj = NOTHING
        Err = 0
    End Function

    Function RegExpText(strng,strStart,strEnd,n)
        Dim regEx,Match,Matches,RetStr
        SET regEx = New RegExp
        regEx.Pattern = strStart&"([/s/S]*?)"&strEnd
        regEx.IgnoreCase = True
        regEx.Global = True
        SET Matches = regEx.Execute(strng)
        For Each Match in Matches
            IF(n=1)THEN
                RetStr = RetStr & regEx.Replace(Match.Value,"$1") & "," 
            ELSE
                RetStr = RetStr & regEx.Replace(Match.Value,"$1")
            END IF 
        Next
        RegExpText = RetStr
        SET regEx=NOTHING
    End Function

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告