注册 登录
编程论坛 VFP论坛

说,某人突然想看看网络小说,于是上次复制的几行“爬虫”代码就派上了用场……

cssnet 发布于 2022-04-05 22:06, 1640 次点击
小说的目录页有全部章节网址链接,而且是明码;
随手整理出一个download.lst,打算用迅雷“导入下载列表”,直接批量下载。
可网站似乎添加了防爬script,用迅雷之类软件无法下载。
心道:
上次不是复制过几行VFP“爬虫”嘛?
正好派上用场:

*------------------
* 网络小说爬虫.prg
* 用途:下载网络小说目录页的全部HTML链接
* URL首页 = "http://www.
* 1、解析目录页的全部链接,并insert into table URL.dbf(略)
* 2、遍历URL.dbf,逐个将网页爬下来并保存。
* 注:每爬一页,就CREATEOBJECT/RELEASE一次,琢磨着,可能有助于避免被BAN
*------------------
local lcFileName, lcURL, lcHTML
LOCAL oxhttp AS Microsoft.xmlhttp
use URL
scan
    lcFileName = trim(URL.filename)
    lcURL = trim(URL.filelink)
    oxhttp=CREATEOBJECT("Microsoft.xmlhttp")
    oxhttp.OPEN("GET", lcURL, .F.)
    oxhttp.SEND()
    lcHTML = oxhttp.responseBody
    strTofile(lcHTML, lcFileName)
    RELEASE oxhttp
endscan
return
*------------------

嘿嘿。
搞定。
收工。
6 回复
#2
cssnet2022-04-05 22:50
download.lst因事先已整理好了,就偷懒没写前半段解析全部章节链接的代码。
URL.dbf大致为:
CREATE TABLE url (filelink C(50), filename C(10), OK L)
append from download.lst sdf
replace all filename with padl(alltrim(str(recno())), 4, "0") + ".htm"

OK字段是备用的,预备万一爬着爬着中途被BAN,那就加一段代码,作“断点续传”。
大概是长这样子:

http://www. | 0001.htm
http://www. | 0002.htm
http://www. | 0003.htm
……
#3
王咸美2022-04-08 11:42
能把代码写全供大家分享学习吗?期盼中…
#4
cssnet2022-04-08 12:16
以下是引用王咸美在2022-4-8 11:42:19的发言:
能把代码写全供大家分享学习吗?期盼中…


这就已是全部代码了啊。
download.lst是简单地用正则整理的。
正则能弄的,就没必要写代码。
如果不懂正则,那么也就没必要钻研“爬虫”了。
呵呵。

只有本站会员才能查看附件,请 登录

#5
mywisdom882022-04-08 12:43
能爬回来,就是有点慢
#6
qq888811112022-04-11 12:25
不错
#7
kangss2022-04-11 13:00
不懂正则。先收藏。谢谢!
1