curl 抓取网页(块传输编码(ChunkedTransfer)改变消息主体与实体主体的区别 )

优采云 发布时间: 2022-02-11 12:19

  curl 抓取网页(块传输编码(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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线