发布时间:2015-02-02 18:27:41作者:知识屋
Linux抓取网页,简单方法是直接通过 curl 或 wget 两种命令。
curl 和 wget支持协议
curl 支持 http,https,ftp,ftps,scp,telnet等网络协议
wget支持 http,https,ftp网络协议curl 和 wget抓取实例
抓取网页,主要有url 网址和proxy代理两种方式
1、 url 网址方式抓取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl http://www.baidu.com/ -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget http://www.baidu.com/ -O baidu_html2
有的时候,由于网速/数据丢包/服务器宕机/等原因,导致暂时无法成功下载网页,这时,可能就需要多次尝试发送连接,请求服务器的响应;如果多次仍无响应,则可以确认服务器出问题了
(1)curl多次尝试连接
curl --retry 10 --retry-delay 60 --retry-max-time 60 http://www.baidu.com/ -o baidu_html
注: --retry表示重试次数; --retry-delay表示两次重试之间的时间间隔(秒为单位); --retry-max-time表示在此最大时间内只容许重试一次(一般与--retry-delay相同)
(2)wget多次尝试连接
wget -t 10 -w 60 -T 30 http://www.baidu.com/ -O baidu_html2
注:-t(--tries)表示重试次数; -w表示两次重试之间的时间间隔(秒为单位); -T表示连接超时时间,如果超时则连接不成功,继续尝试下一次连接
附: curl 判断服务器是否响应,还可以通过一段时间内下载获取的字节量来间接判断,命令格式如下:
curl -y 60 -Y 1 -m 60 http://www.baidu.com/ -o baidu_html
注:-y表示测试网速的时间; -Y表示-y这段时间下载的字节量(byte为单位); -m表示容许请求连接的最大时间,超过则连接自动断掉放弃连接
2、 proxy代理方式抓取
proxy代理下载,是通过连接一台中间服务器间接下载url网页的过程,不是url直接连接网站服务器下载
两个著名的免费代理网站:
freeproxylists.net(全球数十个国家的免费代理,每日都更新)
xroxy.com(通过设置端口类型、代理类型、国家名称进行筛选)
在freeproxylists.net网站,选择一台中国的免费代理服务器为例,来介绍proxy代理抓取网页:
218.107.21.252:8080(ip为218.107.21.252;port为8080,中间以冒号“:”隔开,组成一个套接字)
(1)curl 通过代理抓取百度首页
curl -x 218.107.21.252:8080 -o aaaaa http://www.baidu.com(port 常见有80,8080,8086,8888,3128等,默认为80)
注:-x表示代理服务器(ip:port),即curl先连接到代理服务器218.107.21.252:8080,然后再通过218.107.21.252:8080下载百度首页,最后218.107.21.252:8080把下载的百度首页传给curl至本地(curl不是直接连接百度服务器下载首页的,而是通过一个中介代理来完成)
(2)wget 通过代理抓取百度首页
wget通过代理下载,跟curl不太一样,需要首先设置代理服务器的http_proxy=ip:port
以ubuntu为例,在当前用户目录(cd ~),新建一个wget配置文件(.wgetrc),输入代理配置:
http_proxy=218.107.21.252:8080
然后再输入wget抓取网页的命令:
wget http://www.baidu.com -O baidu_html2
代理下载截图:
=======================
抓取的百度首页数据(截图):
其它命令参数用法,同url网址方式,在此不再赘述
ftp协议、迭代子目录等更多的curl 和 wget用法,可以man查看帮助手册
知识拓展:
在国内,由于某种原因一般难以直接访问国外某些敏感网站,需要通过 VPN 或 代理服务器才能访问
如果校园网和教育网有IPv6,则可以通过sixxs.org免费代理访问facebook、twitter、六维空间等网站
其实,除了VPN 和 IPv6+sixxs.org代理方式外,普通用户还是有其它途径访问到国外网站
下面介绍两个著名的免费代理网站:
freeproxylists.net(全球数十个国家的免费代理,每日都更新)
xroxy.com(通过设置端口类型、代理类型、国家名称进行筛选)
curl 项目实例
使用curl + freeproxylists.net免费代理,实现了全球12国家google play游戏排名的网页抓取以及趋势图查询(抓取网页模块全部使用Shell编写,核心代码约1000行)
游戏排名趋势图请见我先前的博客:JFreeChart项目实例
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能