注册 登录
编程论坛 VFP论坛

如何用VFP将《仙道九绝》小说爬下来?

王咸美 发布于 2025-11-16 13:48, 439 次点击
如何用VFP将《仙道九绝》小说爬下来?
网址:https://www.
要求:1. 将小说各章节完整爬下来;
     2. 将小说正文完整爬下来。
请高手赐教,万分感谢!!!(主要是学习代码的编写)
21 回复
#2
yiyanxiyin2025-11-17 09:48
这种html的都简单, 唯一复杂点的是canvas, 必须截图,然后ocr
#3
吹水佬2025-11-17 09:51
以下是引用王咸美在2025-11-16 13:48:05的发言:

主要是学习代码的编写)

参考上一贴基本思路就有了,学习代码的编写主要是动手写代码,写到哪有什么问题可以提出共同探讨。
这类问题主要是获取网页内容,方法有多种,可视实际情况而定。
还要理解一下 HTML 文件的结构和常用几个标签的含义。
本论坛 vfp 版块也有不少贴讨论类似的问题,如搜索“网页”等。

#4
吹水佬2025-11-17 11:15
只有本站会员才能查看附件,请 登录

程序代码:

DECLARE long URLDownloadToFileA  IN urlmon  long,string,string,long,long
DECLARE long DeleteUrlCacheEntry IN wininet string
dom = CREATEOBJECT("htmlfile")
    * 获取内容(示例只取第一章内容,其他章节类推)
content = getContent("https://www./10070880/10116202.html")
    * 显示内容
tmpFile = "C:\_temp\content.txt"
STRTOFILE(content, tmpFile)
MODIFY FILE (tmpFile)
DELETE FILE (tmpFile)
CLEAR ALL
RETURN

FUNCTION getContent(url)
    LOCAL cHtml,titles, content
        * 取网页
    cHtml = STRCONV(getHtml(url), 11)
        * 载入网页解析
    dom.write(cHtml)
        * 取标题
    titles = dom.getElementsByTagName("h1")
    content = ""
    FOR EACH title IN titles
        IF title.classname == "title"
            content = title.innertext + 0h0D0A0D0A
            EXIT
        ENDIF
    ENDFOR
        * 取第一页内容
    content = content + dom.getElementById("content").innertext + 0h0D0A0D0A
    dom.close
        * 取第二页内容
    url = JUSTPATH(url)+ "/" + JUSTSTEM(url) + "_2.html"
    cHtml = STRCONV(getHtml(url), 11)
    dom.write(cHtml)
    content = content + dom.getElementById("content").innertext + 0h0D0A0D0A
    dom.close
    RETURN content
ENDFUNC

FUNCTION getHtml(url)
    LOCAL tmpHtml
    tmpHtml = "C:\_temp\tmp.html"    && 临时文件
    DeleteUrlCacheEntry(url)
    IF URLDownloadToFileA(0, url, tmpHtml, 0, 0)==0
        ret = FILETOSTR(tmpHtml)
        DELETE FILE (tmpHtml)
        RETURN ret
    ENDIF
    ? "下载 " + url + " 失败"
    RETURN ""
ENDFUNC
#5
王咸美2025-11-17 12:17
谢谢!谢谢🙏
#6
王咸美2025-11-17 12:28
@吹水佬 我想全部下载下来,上述代码如何改?还请赐教!谢谢!!!(新手,水平有限)
#7
吹水佬2025-11-17 14:13
以下是引用王咸美在2025-11-17 12:28:57的发言:

@吹水佬 我想全部下载下来,上述代码如何改?还请赐教!谢谢!!!(新手,水平有限)

每章的网页地址这个能找得到吧?
看看有什么规律
没见到有第22章?



#8
王咸美2025-11-17 14:27
确实没见到第22章
#9
王咸美2025-11-18 15:11
为什么IE浏览器打不开网页?
#10
吹水佬2025-11-18 15:50
以下是引用王咸美在2025-11-18 15:11:09的发言:

为什么IE浏览器打不开网页?

什么情况?
截图看看

#11
王咸美2025-11-18 16:05
我用的系统是windows xp 浏览器是IE,是不是电脑配置落后导致网页无法打开?我发贴时是从手机上看到的网页。
#12
王咸美2025-11-18 16:24
只有本站会员才能查看附件,请 登录
#13
吹水佬2025-11-18 16:58

看看IE是什么版本?
#14
王咸美2025-11-18 17:32
只有本站会员才能查看附件,请 登录
#15
吹水佬2025-11-18 19:29
回复 12楼 王咸美
以下是引用王咸美在2025-11-18 15:11:09的发言:

为什么IE浏览器打不开网页?

下载不了
IE也打不开
是不是网路问题
#16
王咸美2025-11-18 22:26
能将各章目录爬下来吗?
#17
吹水佬2025-11-18 23:34
以下是引用王咸美在2025-11-18 22:26:32的发言:

能将各章目录爬下来吗?

浏览器打开页面,右点击各章连接获取网址。
观察每章网址编址是有规律,可以自动生成。
就是到22章就变成23章,自己去调整就可以。

#18
hsfisher2025-11-19 08:30
学习了
#19
王咸美7 天前 11:21
@吹水佬:如果每章节页数不固定,比如有的章节有三页,有的章节有两页,有的章节只有一页,不知代码如何修改?盼指点!
#20
吹水佬7 天前 11:54
回复 19楼 王咸美
是哪个章节?
#21
王咸美7 天前 12:17
我是说假如爬其他小说出现这种情况,代码应如何修改,通用性更强。
#22
吹水佬7 天前 13:57
以下是引用王咸美在2025-11-21 12:17:01的发言:

我是说假如爬其他小说出现这种情况,代码应如何修改,通用性更强。

没有通用的,甚至是被动的。今日行得通,明日不一定也通行。
只要你用浏览器看得到的东西都会有的,但要看具体情况而定,这类问题是没有通式,只有看网页源代码。

1