网站内容抓取工具(2019独角兽企业重金招聘Python工程师标准(图)标准)
优采云 发布时间: 2021-11-29 16:13网站内容抓取工具(2019独角兽企业重金招聘Python工程师标准(图)标准)
2019独角兽企业重磅Python工程师招聘标准>>>
我们的目标是在 Mac OS 上获取静态服务器的内容,通常 wget 是一个不错的选择。
wget 是一个命令行工具,用于从 Web 服务器获取内容。但是,Mac OS X(Mountain Lion/Mavericks/Snow Leopard)上没有提供这个工具,但是 curl 是可用的。
wget VS 卷曲
卷曲
获取
总体来说curl比wget好很多,但是要想得到网站的镜像,迭代函数必不可少。我必须自己做,并在 Mac 上构建一个 wget。
构建 wget
首先,确保你已经安装了 Xcode 和 GCC。如果你不知道如何安装,你可以参考这个链接。
然后从gnu下载wget的源码
curl -O http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz
下载后解压
tar -xvf wget-1.15.tar.gz
解压后需要运行配置命令准备编译
cd wget-1.15
./configure --with-ssl=openssl
这里我们选择openssl作为ssl的参数选项。大家不会忘记最近发生的openssl的heartbleed漏洞:)
配置好后,运行make
make
不出意外就会弹出很多警告,别着急,看到下面的内容就应该编译成功了
... ...
... ...
gcc -O2 -Wall -o wget cmpt.o connect.o convert.o cookies.o ftp.o css_.o css-url.o ftp-basic.o ftp-ls.o hash.o host.o html-parse.o html-url.o http.o init.o log.o main.o netrc.o progress.o ptimer.o recur.o res.o retr.o spider.o url.o warc.o utils.o exits.o build_info.o version.o ftp-opie.o openssl.o http-ntlm.o ../lib/libgnu.a -liconv -lssl -lcrypto -lz -ldl -lz -lz
Making all in doc
./texi2pod.pl -D VERSION="1.15" ./wget.texi wget.pod
/usr/bin/pod2man --center="GNU Wget" --release="GNU Wget 1.14" wget.pod > wget.1
Making all in po
Making all in tests
make[2]: Nothing to be done for `all'.
Making all in util
make[2]: Nothing to be done for `all'.
make[2]: Nothing to be done for `all-am'.
最后,安装
sudo make install
安装成功后,尝试查看wget是否安装成功
$ which wget
/usr/local/bin/wget
如果看到如上结果说明wget已经构建成功并部署到/usr/local/bin目录下
好了,万事俱备,就可以开始爬取网站想要获取的内容了。
wget -mk http://website.com
-m 参数表示迭代获取,-k 参数表示将绝对路径替换为相对路径。捕获的内容将存储在本地目录中。
比如我想赶新浪新闻
$ wget -mk http://news.sina.com.cn
--2014-06-30 16:55:26-- http://news.sina.com.cn/
Resolving news.sina.com.cn... 58.63.236.31, 58.63.236.46, 58.63.236.48, ...
Connecting to news.sina.com.cn|58.63.236.31|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 636992 (622K) [text/html]
Saving to: ‘news.sina.com.cn/index.html’
100%[======================================>] 636,992 391KB/s in 1.6s
2014-06-30 16:55:29 (391 KB/s) - ‘news.sina.com.cn/index.html’ saved [636992/636992]
Loading robots.txt; please ignore errors.
--2014-06-30 16:55:29-- http://news.sina.com.cn/robots.txt
Reusing existing connection to news.sina.com.cn:80.
HTTP request sent, awaiting response... 200 OK
Length: 70 [text/plain]
Saving to: ‘news.sina.com.cn/robots.txt’
100%[======================================>] 70 --.-K/s in 0.03s
2014-06-30 16:55:29 (2.54 KB/s) - ‘news.sina.com.cn/robots.txt’ saved [70/70]
--2014-06-30 16:55:29-- http://news.sina.com.cn/js/792/2012-08-09/41/headnews.js
Reusing existing connection to news.sina.com.cn:80.
HTTP request sent, awaiting response... 200 OK
Length: 31699 (31K) [application/x-javascript]
Saving to: ‘news.sina.com.cn/js/792/2012-08-09/41/headnews.js’
100%[======================================>] 31,699 --.-K/s in 0.04s
2014-06-30 16:55:29 (731 KB/s) - ‘news.sina.com.cn/js/792/2012-08-09/41/headnews.js’ saved [31699/31699]
--2014-06-30 16:55:29-- http://news.sina.com.cn/pfpnews/js/libweb.js
Reusing existing connection to news.sina.com.cn:80.
HTTP request sent, awaiting response... 200 OK
Length: 6554 (6.4K) [application/x-javascript]
Saving to: ‘news.sina.com.cn/pfpnews/js/libweb.js’
100%[======================================>] 6,554 --.-K/s in 0.03s
抓包成功后的目录如下
注意:
使用酿造
另一个非常有效的方法是使用 homebrew,它是一个包管理工具。安装非常简单:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
设置好后,运行
$ brew install wget
就是这样,很方便