使用wget爬取整个网站
本文最后更新于:2022年4月26日 下午
使用wget爬取整个网站
本学期恰逢有门课搜索引擎作业需要暴力爬取整个网站。记录一下过程及操作。
1.安装wget
Mac下可以使用brew直接安装。但是第一次装好brew没有设置过镜像源、电脑里的git使用过的话,会有一点问题:
1 |
|
概括地说,找不到包。这是因为没有更新源。更新源时有以下报错:
1 |
|
这就很清楚了,git找不到目标,给它设置一个即可。查看详细信息:
1 |
|
打开这个报错的路径:
1 |
|
此时应该可以使用brew update
了,下载wget成功。
2.wget使用参数
我们要下载一个网站所有的网页,包括所有引用源,但是不要跨域爬取。下面记录一些常用的参数(不是全部)。
2.1.我使用的参数:
-c
,断点续传-r
,递归下载-p
,下载网页所需所有文件-k
,将绝对链接转换为本地相对链接,这样就可以本地脱机浏览网页了--no-check-certificate
,不检查证书(http可能被劫持。隐患换性能)robots=off
,忽略robots协议(真刑啊)-m
,镜像,-N -r -l inf --no-remove-listing
的缩写形式
2.2.另外的一些常用参数:
-np
,不搜索上层目录-nd
,下载时不创建一层层目录,所有文件下载到当前文件夹中-H
,递归时转到外部主机下载图片或链接(真刑啊)-l
,指定递归深度-A.[文件拓展名]
,下载.[文件拓展名]
的文件- 伪装
--random-wait
,获取多个文件时,每次随机等待间隔0.5*WAIT…1.5*WAIT 秒--referer=URL
,在 HTTP 请求头包含‘Referer: URL’(跨域访问有用)--user-agent=AGENT
,设置浏览器头(伪装成浏览器)--load-cookies=FILE
,会话开始前从FILE中载入cookies--save-cookies=FILE
,会话结束后保存cookies至FILE--keep-session-cookies
,载入并保存会话 (非永久) cookies
3.结果
1 |
|
没找到在哪里设置多线程下载,还是挺慢的。还好网站没做反爬🤪
参考链接
本博客所有文章除特别声明外均为原创,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!