| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 706 人关注过本帖
标题:如何将《吃喝玩乐之重生1997》全部章节网址和全文爬下来
只看楼主 加入收藏
王咸美
Rank: 1
等 级:新手上路
帖 子:883
专家分:3
注 册:2018-1-4
收藏
得分:0 
谢谢各位的热心指点!不好意思!章节太多没有仔细看,我怕万一出现这种状况不好处理。如何用老式IE浏览器下载各章节小说?还请高手赐教,再次谢谢🙏
6 天前 20:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10903
专家分:43527
注 册:2014-5-20
收藏
得分:10 
回复 11楼 王咸美
什么破网,目录有两套,对应的章节内容也有差别,说不定也是从哪复制来的。
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


6 天前 21:48
王咸美
Rank: 1
等 级:新手上路
帖 子:883
专家分:3
注 册:2018-1-4
收藏
得分:0 
不知为何我的电脑上目录页打不开,先结贴吧。

[此贴子已经被作者于2025-11-21 23:20编辑过]

6 天前 22:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10903
专家分:43527
注 册:2014-5-20
收藏(1)
得分:0 
没看头,内容缺失、乱码等,如第3章。

图片附件: 游客没有浏览图片的权限,请 登录注册

简单测试代码,只作参考,不能照抄。
程序代码:
SET DEFAULT TO (ADDBS(JUSTPATH(SYS(16))))
DECLARE long PostMessageA IN user32 long,long,long,long
IF !FILE("吃喝玩乐之重生1997.dbf")
    CREATE TABLE 吃喝玩乐之重生1997 (title C(100), addr C(254), txt M)
    USE 
ENDIF
USE 吃喝玩乐之重生1997 ALIAS tu
of = CREATEOBJECT("form1")
of.show(1)
CLOSE TABLES ALL 
CLEAR ALL
RETURN

DEFINE CLASS form1 as Form
    width = 800
    height = 600
    AutoCenter = .T.
    AllowOutput = .f.
    ADD OBJECT but as commandbutton WITH left=10,top=10,width=100,height=22,caption="开始"
    ADD OBJECT grd as grid WITH left=10,top=40,width=250,height=550,RecordSource="tu",AllowCellSelection=.f.
    ADD OBJECT edt as editbox WITH left=280,top=40,width=510,height=550
    ADD OBJECT web as Olecontrol with OleClass="Shell.Explorer.2",left=-100

    PROCEDURE Destroy
        UNBINDEVENTS(this.hWnd)
    ENDPROC
    
    PROCEDURE Init
        this.web.Silent = .t.
        BINDEVENT(this.hWnd, 0x401, this, "myMessage")
    ENDPROC

    PROCEDURE but.click
        ZAP IN "tu"
        thisform.edt.value = ""
        thisform.web.navigate("http://www./105790648")
    ENDPROC
    
    PROCEDURE grd.click
        thisform.edt.value = tu.txt
        thisform.edt.SelStart = 0
    ENDPROC

    PROCEDURE web.documentComplete(pdisp, url)
        IF (SYS(3095, pdisp) == SYS(3095, this))
            PostMessageA(thisform.hWnd, 0x401, 0, 0)
        ENDIF 
    ENDPROC

    FUNCTION myMessage(hWnd, uMsg, wParam, lParam)
        dom = this.web.document
        IF VARTYPE(dom) != "O"
            this.Enabled = .t.
            RETURN 
        ENDIF
        IF EMPTY(tu.addr)
            #if 1   && 0 or 1
                * ie版本高试用
            lis = dom.getElementsByClassName("line3")
            FOR EACH li IN lis
                INSERT INTO tu VALUES (li.firstChild.innertext, li.firstChild.href, "")
            ENDFOR
            #else
                * ie版本低试用
            lis = dom.getElementsByTagName("li")
            FOR EACH li IN lis
                IF li.classname == "line3"
                    INSERT INTO tu VALUES (;
                        li.getElementsByTagName("a").item[0].innertext,;
                        li.getElementsByTagName("a").item[0].href, "";
                    )
                ENDIF 
            ENDFOR
            #endif
            GO TOP IN "tu"
            this.grd.setfocus
            this.web.navigate(ALLTRIM(tu.addr))
            RETURN     
        ENDIF
        REPLACE tu.txt WITH ALLTRIM(tu.title)+ 0h0D0A0D0A + dom.getElementById("ad").innertext
        ? ALLTRIM(tu.title)
        SKIP IN "tu"
        IF !EOF("tu")
            this.grd.setfocus
            this.web.navigate(ALLTRIM(tu.addr))
            RETURN 
        ENDIF
        GO TOP IN "tu"
        this.grd.setfocus
        this.Enabled = .t.
    ENDFUNC
ENDDEFINE



[此贴子已经被作者于2025-11-21 23:45编辑过]

6 天前 23:30
王咸美
Rank: 1
等 级:新手上路
帖 子:883
专家分:3
注 册:2018-1-4
收藏
得分:0 
谢谢!
5 天前 06:01
王咸美
Rank: 1
等 级:新手上路
帖 子:883
专家分:3
注 册:2018-1-4
收藏
得分:0 
@吹水佬:各章节标题和网址爬下来了,没有见到各章节小说内容!

[此贴子已经被作者于2025-11-24 11:30编辑过]

5 天前 08:38
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:322
专家分:2314
注 册:2023-6-29
收藏
得分:0 
以下vbs代码演示如何不依赖ie, 使用正则提取页面内容:
程序代码:
Set xhr = CreateObject("MSXML2.XMLHTTP.3.0") 
xhr.open "GET", "http://www./105790648", false 
xhr.send 

If xhr.Status = 200 Then 
    ' 检测编码并处理UTF-8
    Dim bytes, htmlContent
    bytes = xhr.responseBody
    
    ' 检查是否有BOM标记
    If LenB(bytes) >= 3 Then
        ' 检查UTF-8 BOM: EF BB BF
        If AscB(MidB(bytes, 1, 1)) = &HEF And _
           AscB(MidB(bytes, 2, 1)) = &HBB And _
           AscB(MidB(bytes, 3, 1)) = &HBF Then
            ' 有UTF-8 BOM,去除BOM
            bytes = MidB(bytes, 4)
        End If
    End If
    
    ' 将字节数据转换为UTF-8字符串
    Set stream = CreateObject("ADODB.Stream")
    stream.Type = 1 ' 二进制类型
    stream.Open
    stream.Write bytes
    stream.Position = 0
    stream.Type = 2 ' 文本类型
    stream.Charset = "UTF-8"
    htmlContent = stream.ReadText
    stream.Close
    
Else 
    WScript.Echo "Error: " & xhr.Status 
End If 


WScript.Echo "文件内容长度: " & Len(htmlContent)

Set regEx = New RegExp
regEx.Global = True
regEx.IgnoreCase = True
regEx.Pattern = "<a\s+[^>]*href=""([^""]*)""[^>]*title=""([^""]*)""[^>]*>"

Set matches = regEx.Execute(htmlContent)

If matches.Count > 0 Then
    For i = 0 To matches.Count - 1
        href = matches(i).SubMatches(0)
        title = matches(i).SubMatches(1)
        WScript.Echo "链接 " & i + 1 & ":"
        WScript.Echo "href: " & href
        WScript.Echo "title: " & title
        WScript.Echo "---"
    Next
Else
    WScript.Echo "未找到任何链接"

End If
请将vbs脚本保存为ansi或者unicode的vbs文件, 不要保存为utf8, 然后以管理员权限在cmd中使用cscript yourvbsfilename.vbs 执行
3 天前 10:14
王咸美
Rank: 1
等 级:新手上路
帖 子:883
专家分:3
注 册:2018-1-4
收藏
得分:0 
可惜不是vfp代码
3 天前 13:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10903
专家分:43527
注 册:2014-5-20
收藏
得分:0 
回复 17楼 yiyanxiyin
这个简单,不用解析。
给第一章截图看看?
3 天前 13:37
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:322
专家分:2314
注 册:2023-6-29
收藏
得分:0 
to 王咸美:  任何语言原理都一样, 不要拘泥于某种语言, 关键是方法原理  to 吹水佬: 我没有抓第一章, vbs代码的目的就是提供一个方法
3 天前 14:30
快速回复:如何将《吃喝玩乐之重生1997》全部章节网址和全文爬下来
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026709 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved