curl 抓取网页(块传输编码(ChunkedTransfer)改变消息主体与实体主体的区别 )
优采云 发布时间: 2022-02-11 12:19curl 抓取网页(块传输编码(ChunkedTransfer)改变消息主体与实体主体的区别
)
分块传输编码
分块编码更改消息正文,以便消息正文以块的形式发送。每个块都有自己的大小指示符,紧跟在所有块之后的收录实体头字段的可选尾部。这允许发送者动态生成内容并携带有用的信息,接收者可以使用这些信息来确定是否收到了消息。
4、curl 在指定要下载的链接时可以支持 URL 序列或集合,而 wget 不能。
5、wget 支持递归下载,而 curl 不支持。
二、网站抓取实例
抓取网页有两种方式:url URL和proxy代理。以百度首页的抓取为例。
1、url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl http://www.baidu.com/ -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget http://www.baidu.com/ -O baidu_html
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。这时候,你可能需要尝试多次发送连接来请求服务器的响应;如果多次还是没有响应,那么就可以确认服务器有问题了。
(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 表示超时时间。
curl -y 60 -Y 1 -m 60 http://www.baidu.com -o baidu_html
注:-y表示测试网速的时间;-Y 表示停止传输速度的限制(单位:字节/秒);-m 表示最大连接时间,超过连接会自动断开连接并放弃连接
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 http://www.baidu.com/ -O baidu_html
注意:-t(-tries)表示重试次数;-w 表示两次重试的时间间隔(单位:秒);-T 表示链接超时时间。
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url。这里代理使用 127.0.0.1:8080 进行测试。
(1)curl通过代理爬取百度首页
curl -x 127.0.0.1:8080 -o baidu_html http://www.baidu.com
注意:-x表示代理服务器(ip:port),常用端口有80、8080、8086、8888、3128等,默认为80,即curl首先连接代理服务器127. 0.0.1:8080,然后通过它下载百度主页,最后127.0.0.1:8080把下载的百度主页传给卷曲到当地
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
http_proxy=127.0.0.1:8080
然后输入wget命令爬取网页:
wget http://www.baidu.com -O baidu_html