
curl 抓取网页
curl 抓取网页(PHP爬虫实现方法直接采用PHPcurl来抓取数据socket方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2022-02-27 13:01
PHP爬虫总结
PHP爬虫 网上的爬虫很多很多,五花八门,但是大家都不喜欢用PHP写爬虫。这可能是由于不稳定和组件库太少。不管怎样,PHP 还是很容易写的。 curl实现方式直接使用PHP curl来抓取数据。 socket方法采用最原创的socket方法。有一个https:hightmanpspider项目,非常完美。它也使用我使用腾讯云的主机。 curl方法利用爬取网页的步骤设置种子url,一般是网站的域名。通过这个首页一步步抓取种子url,分析这个页面,获取所有相关url,根据是否抓取外站策略判断。处理url判断是否是需要爬取的网页。如果是要爬取的网页,则处理存储。如果没有,请更新队列。 PHP爬虫推荐有多种:https:smartengphp-crawler https:smartengpspider 特点 轻量级、内核 简单易用 基于Redis的调度插件,支持分布式和断点抓取,易于扩展和定制,可以自定义调度插件-根据您的需要随时进入
1.1K 查看全部
curl 抓取网页(PHP爬虫实现方法直接采用PHPcurl来抓取数据socket方法)
PHP爬虫总结
PHP爬虫 网上的爬虫很多很多,五花八门,但是大家都不喜欢用PHP写爬虫。这可能是由于不稳定和组件库太少。不管怎样,PHP 还是很容易写的。 curl实现方式直接使用PHP curl来抓取数据。 socket方法采用最原创的socket方法。有一个https:hightmanpspider项目,非常完美。它也使用我使用腾讯云的主机。 curl方法利用爬取网页的步骤设置种子url,一般是网站的域名。通过这个首页一步步抓取种子url,分析这个页面,获取所有相关url,根据是否抓取外站策略判断。处理url判断是否是需要爬取的网页。如果是要爬取的网页,则处理存储。如果没有,请更新队列。 PHP爬虫推荐有多种:https:smartengphp-crawler https:smartengpspider 特点 轻量级、内核 简单易用 基于Redis的调度插件,支持分布式和断点抓取,易于扩展和定制,可以自定义调度插件-根据您的需要随时进入
1.1K
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2022-02-24 23:21
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后,格式为wget-1.11.4-1-setup.exe,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后,格式为wget-1.11.4-1-setup.exe,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(PHPheader调试很有用的原因及解决办法(一))
网站优化 • 优采云 发表了文章 • 0 个评论 • 38 次浏览 • 2022-02-24 03:19
[header_size] => 312
[request_size] => 61
[文件时间] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[总时间] => 0.172
[namelookup_time] => 0.016
[连接时间] => 0.063
[pretransfer_time] => 0.063
[大小上传] => 0
[size_download] => 14658[speed_download] => 85220
[speed_upload] => 0
[下载内容长度] => 14658
[上传内容长度] => 0
[starttransfer_time] => 0.125
[重定向时间] => 0
[certinfo] => 数组
(
)
[redirect_url] =>
)
2、这些信息对于调试非常有用。例如,cURL在爬取时,由于网络等原因,爬取的数据可能不完整。这就是我们如何从获得的数据中计算文件大小的方法。 ,然后与 curl_getinfo() 得到的比较。如果大小相等,则确定下载正确,否则重复尝试。
我们来看一个抓图的例子:
代码如下:
PHP
header("Content-Type: image/png");
//1、初始化
$ch = curl_init();
//2、设置选项,包括URL
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,1);
//3、执行并获取内容
$res = curl_exec($ch);
//获取信息
$info = curl_getinfo($ch);
//4、释放资源
curl_close($ch);
file_put_contents("d:/aa.png",$res);
$size = filesize("d:/aa.png");
if ($size != $info['size_download']) {
echo "下载的数据不完整,请重新下载";
} 否则 {
echo "下载数据完成";
}
3、使用 POST 方法在 cURL 中发送数据
代码如下:
PHP
$ch = curl_init();
$data = array('name'=>'kelly','age'=>27,'sex'=>1);
curl_setopt($ch,"");
curl_setopt($ch,1);
//设置为帖子
curl_setopt($ch,CURLOPT_POST,1);
//添加post变量
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
你可以用这个方法模拟一条消息,也可以坐在浇水机器人上,思路是一样的
4、使用 cURL 上传文件
代码如下:
'美女',"上传"=>"@a.zip");
$ch = curl_init();
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
注意:发送文件时,在文件名前加上@,并使用完整路径
5、cURL 设置
其实cURL有很多配置选项,这些选项是cURL的灵魂,通过setopt()来设置,下面总结了一些比较常见和重要的配置项,希望读者以后使用cURL。帮助:
CURLOPT_AUTOREFERER:根据location:重定向时,自动在header中设置Referer:信息
CURLOPT_COOKIESESSION:启用后,cURL 将紧密传递会话 cookie,而忽略其他 cookie
CURLOPT_HEADER:将头信息作为数据流输出
CURLOPT_INFILESIZE:设置上传文件的字节大小
CURLOPT_MAXCONNECTS:允许的最大连接数
CURLOPT_MAXREDIRS:指定 HTTP 重定向的最大数量
CURLOPT_COOKIE:设置 HTTP 请求的“cookie:”部分的内容。多个 cookie 后跟一个分号和分号后的一个空格
CURLOPT_POSTFIELDS:所有数据都使用HTTP协议中的“POST”操作发送文件,文件名前加@前缀并使用完整路径
......
更多配置项请参考PHP手册
cURL 很强大,它是一个通用库,不是 PHP 独有的。
希望读者通过学习这篇博文中的几个经典 cURL 示例有所收获。
总结
如果你觉得编程之家网站的内容还不错,欢迎你把编程之家网站推荐给你的程序员朋友。 查看全部
curl 抓取网页(PHPheader调试很有用的原因及解决办法(一))
[header_size] => 312
[request_size] => 61
[文件时间] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[总时间] => 0.172
[namelookup_time] => 0.016
[连接时间] => 0.063
[pretransfer_time] => 0.063
[大小上传] => 0
[size_download] => 14658[speed_download] => 85220
[speed_upload] => 0
[下载内容长度] => 14658
[上传内容长度] => 0
[starttransfer_time] => 0.125
[重定向时间] => 0
[certinfo] => 数组
(
)
[redirect_url] =>
)
2、这些信息对于调试非常有用。例如,cURL在爬取时,由于网络等原因,爬取的数据可能不完整。这就是我们如何从获得的数据中计算文件大小的方法。 ,然后与 curl_getinfo() 得到的比较。如果大小相等,则确定下载正确,否则重复尝试。
我们来看一个抓图的例子:
代码如下:
PHP
header("Content-Type: image/png");
//1、初始化
$ch = curl_init();
//2、设置选项,包括URL
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,1);
//3、执行并获取内容
$res = curl_exec($ch);
//获取信息
$info = curl_getinfo($ch);
//4、释放资源
curl_close($ch);
file_put_contents("d:/aa.png",$res);
$size = filesize("d:/aa.png");
if ($size != $info['size_download']) {
echo "下载的数据不完整,请重新下载";
} 否则 {
echo "下载数据完成";
}
3、使用 POST 方法在 cURL 中发送数据
代码如下:
PHP
$ch = curl_init();
$data = array('name'=>'kelly','age'=>27,'sex'=>1);
curl_setopt($ch,"");
curl_setopt($ch,1);
//设置为帖子
curl_setopt($ch,CURLOPT_POST,1);
//添加post变量
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
你可以用这个方法模拟一条消息,也可以坐在浇水机器人上,思路是一样的
4、使用 cURL 上传文件
代码如下:
'美女',"上传"=>"@a.zip");
$ch = curl_init();
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
注意:发送文件时,在文件名前加上@,并使用完整路径
5、cURL 设置
其实cURL有很多配置选项,这些选项是cURL的灵魂,通过setopt()来设置,下面总结了一些比较常见和重要的配置项,希望读者以后使用cURL。帮助:
CURLOPT_AUTOREFERER:根据location:重定向时,自动在header中设置Referer:信息
CURLOPT_COOKIESESSION:启用后,cURL 将紧密传递会话 cookie,而忽略其他 cookie
CURLOPT_HEADER:将头信息作为数据流输出
CURLOPT_INFILESIZE:设置上传文件的字节大小
CURLOPT_MAXCONNECTS:允许的最大连接数
CURLOPT_MAXREDIRS:指定 HTTP 重定向的最大数量
CURLOPT_COOKIE:设置 HTTP 请求的“cookie:”部分的内容。多个 cookie 后跟一个分号和分号后的一个空格
CURLOPT_POSTFIELDS:所有数据都使用HTTP协议中的“POST”操作发送文件,文件名前加@前缀并使用完整路径
......
更多配置项请参考PHP手册
cURL 很强大,它是一个通用库,不是 PHP 独有的。
希望读者通过学习这篇博文中的几个经典 cURL 示例有所收获。
总结
如果你觉得编程之家网站的内容还不错,欢迎你把编程之家网站推荐给你的程序员朋友。
curl 抓取网页(curl和wget下载安装1、Ubuntu平台wget命令安装:sudo)
网站优化 • 优采云 发表了文章 • 0 个评论 • 59 次浏览 • 2022-02-22 04:11
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,无需输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:
curl下载地址:
wget和curl包下载地址:
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:WindowsSystem32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据丢包/服务器宕机等原因,导致网页暂时无法下载成功。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录下(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(curl和wget下载安装1、Ubuntu平台wget命令安装:sudo)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,无需输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:
curl下载地址:
wget和curl包下载地址:
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:WindowsSystem32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据丢包/服务器宕机等原因,导致网页暂时无法下载成功。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录下(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(curl抓取网页视频的教程详细教程三个必须要先设置的参数)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2022-02-17 12:06
curl抓取网页视频的教程详细教程三个必须要先设置的参数,解读后其中,下载地址是array(源主机,目标地址,协议)这三个参数是需要确定的,关键是协议也就是airtime(机器可以无限次工作时间)也就是服务器可以持续开机的时间,我们必须设置2秒的array,如果设置3秒,那就等于异步下载了,不能存储实际抓取速度-根据官方说法,10mb每秒也是可以抓取一个视频的!因为手机端抓取我就设置了300mb每秒了!其实android和ios都可以抓取流媒体文件的!流媒体文件的格式可以是http://,也可以是一个图片文件,或者其他通过rtmp协议(即传输协议)传输的内容!那么我们应该抓取什么样的格式呢?1。
网站的视频源只有文字并且是文件的格式,不带图片,也没有协议代码或者代码解析2。网站的视频一般为http://加密视频要解密,至少要解密字幕,才能正常的接收你下载到本地的视频,比如字幕文件!google搜索"如何下载视频",search和点击一个国内的网站没有反应,那么我们该如何抓取你想要下载的视频的呢?而抓取哪些视频呢?这个就要靠一个官方配套的地址,点击下载即可,注意手机平板都可以抓取的!顺带吐槽一下太多网站不支持一键下载,我都抓取完,依然要请大佬们收费,但是实际上官方自己并不会做这种限制,当然他也不可能做,但是大家的需求而已!。 查看全部
curl 抓取网页(curl抓取网页视频的教程详细教程三个必须要先设置的参数)
curl抓取网页视频的教程详细教程三个必须要先设置的参数,解读后其中,下载地址是array(源主机,目标地址,协议)这三个参数是需要确定的,关键是协议也就是airtime(机器可以无限次工作时间)也就是服务器可以持续开机的时间,我们必须设置2秒的array,如果设置3秒,那就等于异步下载了,不能存储实际抓取速度-根据官方说法,10mb每秒也是可以抓取一个视频的!因为手机端抓取我就设置了300mb每秒了!其实android和ios都可以抓取流媒体文件的!流媒体文件的格式可以是http://,也可以是一个图片文件,或者其他通过rtmp协议(即传输协议)传输的内容!那么我们应该抓取什么样的格式呢?1。
网站的视频源只有文字并且是文件的格式,不带图片,也没有协议代码或者代码解析2。网站的视频一般为http://加密视频要解密,至少要解密字幕,才能正常的接收你下载到本地的视频,比如字幕文件!google搜索"如何下载视频",search和点击一个国内的网站没有反应,那么我们该如何抓取你想要下载的视频的呢?而抓取哪些视频呢?这个就要靠一个官方配套的地址,点击下载即可,注意手机平板都可以抓取的!顺带吐槽一下太多网站不支持一键下载,我都抓取完,依然要请大佬们收费,但是实际上官方自己并不会做这种限制,当然他也不可能做,但是大家的需求而已!。
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2022-02-17 04:09
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据丢包/服务器宕机等原因,导致网页暂时无法下载成功。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应,也可以通过一段时间内下载获得的字节数间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、 代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据丢包/服务器宕机等原因,导致网页暂时无法下载成功。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应,也可以通过一段时间内下载获得的字节数间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、 代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(块传输编码(ChunkedTransfer)改变消息主体与实体主体的区别 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-02-16 19:17
)
分块传输编码
分块编码更改消息正文,以便消息正文以块的形式发送。每个块都有自己的大小指示符,紧跟在所有块之后的收录实体头字段的可选尾部。这允许发送者动态生成内容并携带有用的信息,接收者可以使用这些信息来确定是否收到了消息。
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,然后通过它下载百度主页,最后将下载的百度主页转curl到本地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 查看全部
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,然后通过它下载百度主页,最后将下载的百度主页转curl到本地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
curl 抓取网页( hebedichPHP利用Curl实现并发多线程下载文件以上就是)
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2022-02-15 10:21
hebedichPHP利用Curl实现并发多线程下载文件以上就是)
PHP结合curl实现多线程爬取
更新时间:2015-07-09 11:09:13 发布者:hebedich
PHP可以使用Curl来完成各种文件传输操作,比如模拟浏览器发送GET、POST请求等。但是由于PHP语言本身不支持多线程,开发爬虫程序的效率不高,所以经常需要使用 Curl Multi Functions。实现并发多线程访问多个url地址实现并发多线程抓取网页或下载文件的功能
PHP结合curl实现多线程爬取
让我们再看几个例子
(1)下面的代码是爬取多个URL,然后将爬取到的URL的页面代码写入到指定文件中
$urls = array(
'https://www.jb51.net/',
'http://www.google.com/',
'http://www.example.com/'
); // 设置要抓取的页面URL
$save_to='/test.txt'; // 把抓取的代码写入该文件
$st = fopen($save_to,"a");
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 将爬取的代码写入文件
curl_multi_add_handle ($mh,$conn[$i]);
} // 初始化
do {
curl_multi_exec($mh,$active);
} while ($active); // 执行
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
} // 结束清理
curl_multi_close($mh);
fclose($st);
(2)下面的代码和上面类似,只不过这个地方是先把获取到的代码放到一个变量中,然后再将获取到的内容写入到指定的文件中
$urls = array(
'https://www.jb51.net/',
'http://www.google.com/',
'http://www.example.com/'
);
$save_to='/test.txt'; // 把抓取的代码写入该文件
$st = fopen($save_to,"a");
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true); // 不将爬取代码写到浏览器,而是转化为字符串
curl_multi_add_handle ($mh,$conn[$i]);
}
do {
curl_multi_exec($mh,$active);
} while ($active);
foreach ($urls as $i => $url) {
$data = curl_multi_getcontent($conn[$i]); // 获得爬取的代码字符串
fwrite($st,$data); // 将字符串写入文件
} // 获得数据变量,并写入文件
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
fclose($st);
(3)以下代码实现使用PHP的Curl Functions实现并发多线程下载文件
$urls=array(
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip'
);
$save_to='./home/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
$g=$save_to.basename($url);
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);$urls=array(
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip'
);
$save_to='./home/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
$g=$save_to.basename($url);
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);
以上就是本文的全部内容,希望大家喜欢。 查看全部
curl 抓取网页(
hebedichPHP利用Curl实现并发多线程下载文件以上就是)
PHP结合curl实现多线程爬取
更新时间:2015-07-09 11:09:13 发布者:hebedich
PHP可以使用Curl来完成各种文件传输操作,比如模拟浏览器发送GET、POST请求等。但是由于PHP语言本身不支持多线程,开发爬虫程序的效率不高,所以经常需要使用 Curl Multi Functions。实现并发多线程访问多个url地址实现并发多线程抓取网页或下载文件的功能
PHP结合curl实现多线程爬取
让我们再看几个例子
(1)下面的代码是爬取多个URL,然后将爬取到的URL的页面代码写入到指定文件中
$urls = array(
'https://www.jb51.net/',
'http://www.google.com/',
'http://www.example.com/'
); // 设置要抓取的页面URL
$save_to='/test.txt'; // 把抓取的代码写入该文件
$st = fopen($save_to,"a");
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 将爬取的代码写入文件
curl_multi_add_handle ($mh,$conn[$i]);
} // 初始化
do {
curl_multi_exec($mh,$active);
} while ($active); // 执行
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
} // 结束清理
curl_multi_close($mh);
fclose($st);
(2)下面的代码和上面类似,只不过这个地方是先把获取到的代码放到一个变量中,然后再将获取到的内容写入到指定的文件中
$urls = array(
'https://www.jb51.net/',
'http://www.google.com/',
'http://www.example.com/'
);
$save_to='/test.txt'; // 把抓取的代码写入该文件
$st = fopen($save_to,"a");
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true); // 不将爬取代码写到浏览器,而是转化为字符串
curl_multi_add_handle ($mh,$conn[$i]);
}
do {
curl_multi_exec($mh,$active);
} while ($active);
foreach ($urls as $i => $url) {
$data = curl_multi_getcontent($conn[$i]); // 获得爬取的代码字符串
fwrite($st,$data); // 将字符串写入文件
} // 获得数据变量,并写入文件
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
fclose($st);
(3)以下代码实现使用PHP的Curl Functions实现并发多线程下载文件
$urls=array(
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip'
);
$save_to='./home/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
$g=$save_to.basename($url);
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);$urls=array(
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip'
);
$save_to='./home/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
$g=$save_to.basename($url);
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);
以上就是本文的全部内容,希望大家喜欢。
curl 抓取网页(使用php的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-02-14 10:15
使用php的cURL库可以轻松高效的抓取网页。你只需要运行一个脚本,然后分析你爬取的网页,然后你就可以通过编程方式获取你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,甚至只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个 PHP 库。
启用 cURL 设置
首先,我们必须确定我们的 PHP 是否启用了这个库。您可以使用 php_info() 函数获取此信息。
﹤?php
phpinfo();
?﹥
如果您可以在网页上看到以下输出,则说明 cURL 库已启用。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台下,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,取消之前的分号注释。如下:
//取消下在的注释
extension=php_curl.dll
如果你在linux下,那么你需要重新编译你的PHP。编辑时需要打开编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这是一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置需要抓取的网址
curl_setopt($curl, CURLOPT_URL, '');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置 cURL 参数,是否将结果保存为字符串或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL,请求网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
//显示获取到的数据
var_dump($data);
如何发布数据
上面是爬取网页的代码,下面是POST数据到网页。假设我们有一个处理表单的 URL,该表单接受两个表单字段,一个用于电话号码,一个用于文本消息的文本。
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序我们可以看出,使用CURLOPT_POST来设置HTTP协议的POST方法而不是GET方法,然后用CURLOPT_POSTFIELDS设置POST数据。
关于代理服务器
以下是如何使用代理服务器的示例。请注意突出显示的代码,代码很简单,我不需要多说。
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于 SSL 和 Cookie 查看全部
curl 抓取网页(使用php的cURL库可以简单和有效地去抓网页。)
使用php的cURL库可以轻松高效的抓取网页。你只需要运行一个脚本,然后分析你爬取的网页,然后你就可以通过编程方式获取你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,甚至只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个 PHP 库。
启用 cURL 设置
首先,我们必须确定我们的 PHP 是否启用了这个库。您可以使用 php_info() 函数获取此信息。
﹤?php
phpinfo();
?﹥
如果您可以在网页上看到以下输出,则说明 cURL 库已启用。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台下,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,取消之前的分号注释。如下:
//取消下在的注释
extension=php_curl.dll
如果你在linux下,那么你需要重新编译你的PHP。编辑时需要打开编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这是一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置需要抓取的网址
curl_setopt($curl, CURLOPT_URL, '');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置 cURL 参数,是否将结果保存为字符串或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL,请求网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
//显示获取到的数据
var_dump($data);
如何发布数据
上面是爬取网页的代码,下面是POST数据到网页。假设我们有一个处理表单的 URL,该表单接受两个表单字段,一个用于电话号码,一个用于文本消息的文本。
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序我们可以看出,使用CURLOPT_POST来设置HTTP协议的POST方法而不是GET方法,然后用CURLOPT_POSTFIELDS设置POST数据。
关于代理服务器
以下是如何使用代理服务器的示例。请注意突出显示的代码,代码很简单,我不需要多说。
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于 SSL 和 Cookie
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2022-02-13 09:27
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页( curl远不止前面所说的那些功能,你知道几个?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-02-13 09:23
curl远不止前面所说的那些功能,你知道几个?)
使用说明
curl命令是一个功能强大的网络工具,可以通过http、ftp等方式下载和上传文件。其实curl远不止上面提到的功能。您可以通过 man curl 阅读手册页以获取更多信息。 wget 是一个类似的工具。
curl 命令是使用 libcurl 库实现的。 libcurl 库通常在 C 程序中用于处理 HTTP 请求。 curlpp 是 libcurl 的 C++ 包。这些东西可以用在web抓取、网络监控等开发中,curl命令可以帮助解决开发过程中遇到的问题。
常用参数
curl命令的参数很多,这里只列出我用过的,尤其是shell脚本中的。
-A:请随意指定您自己为本次访问声明的浏览器信息
-b/--cookie cookie 字符串或文件读取位置,使用 option 将最后一个 cookie 信息附加到 http 请求中。
-c/--cookie-jar 操作完成后将cookies写入该文件
-C/--continue-在断点处继续
-d/--data HTTP POST方法传输数据
-D/--dump-header 将头信息写入该文件
-F/--form 模拟http表单提交数据
-v/--verbose 小写的v参数用于打印更多信息,包括发送的请求信息,在调试脚本时特别有用。
-m/--max-time 指定处理的最大持续时间
-H/--header 指定请求头参数
-s/--slent reduce输出信息,如进度
--connect-timeout 指定尝试连接的最长时间
-x/--代理
指定代理服务器地址和端口,默认端口为1080
-T/--upload-file 指定上传文件路径
-o/--output 指定输出文件名
--retry 指定重试次数
-e/--referer 指定引用地址
-I/--head 只返回header信息,使用HEAD请求
-u/--user 设置服务器用户和密码
-O:根据服务器上的文件名,会自动在本地存在
-r/--range 从 HTTP/1.1 或 FTP 服务器检索字节范围
-T/--upload-file 上传文件
使用示例
1、抓取页面内容到文件中
[root@xi mytest]# curl -o home.html -- 将百度首页的内容抓取到home.html中
[root@xi mytest]#curl -o #2_#1.jpg~{A,B}/[001-201].JPG
因为A/B下的文件名都是001、002...、201,所以下载的文件同名,所以自定义下载的文件名变成这样: 原文:A/00< @1.JPG ---> 下载后:001-A.JPG 原文:B/001.JPG ---> 下载后:001-B.JPG
2、使用-O(大写),后面的url必须特定于某个文件,否则不会被抓到。你也可以使用正则表达式来抓取东西
[root@xi mytest]# curl -O
结果如下:
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 1575 100 1575 0 0 14940 0 --:--:-- --:--:-- --:--:-- 1538k
在当前执行目录中会生成一张bdlogo.gif的图片。
[root@xi mytest]# curl -O[1-10].JPG --下载屏幕1.jpg~screen10.jpg
3、模拟表单信息、模拟登录、保存cookie信息
[root@xi mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=******
4、模拟表单信息、模拟登录、保存表头信息
[root@xi mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=******
由
生成的cookie
-c(小写)与-D中的cookie不同。
5、使用cookie文件
[root@xi mytest]# curl -b ./cookie_c.txt
6、从断点恢复,-C(大写)
[root@xi mytest]# curl -C -O
7、发送数据,最好使用登录页面测试,因为你传值后,curl会抓取数据回来,可以查看是否传值成功
[root@xi mytest]# curl -d log=aaaa
8、显示爬取错误,下面的例子清楚的显示出来。
[root@xi mytest]# curl -f
curl:(22)请求的URL返回错误:404
[root@xi mytest]# curl
404,未找到
9。伪造源地址,有的网站会判断并请求源地址,防止盗链。
[root@xi mytest]# curl -e:///wp-login.php
10、当我们经常用curl做别人的事情的时候,人家会屏蔽你的IP,这个时候我们可以使用代理
[root@xi mytest]# curl -x 24.10.28.84:32779 -o home.html
11,对于较大的东西,我们可以分段下载
[root@xi mytest]# curl -r 0-100 -o img.part1
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 105 0 --:--:-- --:--:-- --:--:-- 0
[root@xi mytest]# curl -r 100-200 -o img.part2
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 57 0 0:00:01 0:00:01 --:--:-- 0
[root@xi mytest]# curl -r 200- -o img.part3
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 104k 100 104k 0 0 52793 0 0:00:02 0:00:02 --:--:-- 88961
[root@xi mytest]# ls |grep part | xargs du -sh
4.0K one.part1
112K 三.part3
4.0K two.part2
使用的时候,cat一下就可以了,cat img.part* >img.jpg
12,不会显示下载进度信息
[root@xi mytest]# curl -s -o aaa.jpg
13、显示下载进度条
[root@xi mytest]# curl -0(使用http1.0协议的请求)
############################################## # ######################### 100.0%
14、通过ftp下载文件
[xifj@Xi ~]$ curl -u 用户名:密码 -O
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
[xifj@Xi ~]$ curl -u 用户名:密码 -O
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
或者使用下面的方法
[xifj@Xi ~]$ curl -O ftp://username:password@ip:port/demo/curtain/bbstudy_files/style.css
[xifj@Xi ~]$ curl -O ftp://username:password@ip:port/demo/curtain/bbstudy_files/style.css
15、通过ftp上传
[xifj@Xi ~]$ curl -T test.sql ftp://username:password@ip:port/demo/curtain/bbstudy_files/
[xifj@Xi ~]$ curl -T test.sql ftp://username:password@ip:port/demo/curtain/bbstudy_files/
15、模拟浏览器头部
[xifj@Xi ~]$ curl -A "Mozilla/4.0 (兼容; MSIE 6.0; Windows NT 5.0)" -x 12< @3.45.67.89:1080 -o page.html -D cookie0001.txt
16,PUT,GET,POST
比如curl -T localfile~zz/abc.cgi,此时使用的协议是HTTP PUT方式
刚才说到PUT,我自然会想到其他几种方法——GET和POST。 查看全部
curl 抓取网页(
curl远不止前面所说的那些功能,你知道几个?)
使用说明
curl命令是一个功能强大的网络工具,可以通过http、ftp等方式下载和上传文件。其实curl远不止上面提到的功能。您可以通过 man curl 阅读手册页以获取更多信息。 wget 是一个类似的工具。
curl 命令是使用 libcurl 库实现的。 libcurl 库通常在 C 程序中用于处理 HTTP 请求。 curlpp 是 libcurl 的 C++ 包。这些东西可以用在web抓取、网络监控等开发中,curl命令可以帮助解决开发过程中遇到的问题。
常用参数
curl命令的参数很多,这里只列出我用过的,尤其是shell脚本中的。
-A:请随意指定您自己为本次访问声明的浏览器信息
-b/--cookie cookie 字符串或文件读取位置,使用 option 将最后一个 cookie 信息附加到 http 请求中。
-c/--cookie-jar 操作完成后将cookies写入该文件
-C/--continue-在断点处继续
-d/--data HTTP POST方法传输数据
-D/--dump-header 将头信息写入该文件
-F/--form 模拟http表单提交数据
-v/--verbose 小写的v参数用于打印更多信息,包括发送的请求信息,在调试脚本时特别有用。
-m/--max-time 指定处理的最大持续时间
-H/--header 指定请求头参数
-s/--slent reduce输出信息,如进度
--connect-timeout 指定尝试连接的最长时间
-x/--代理
指定代理服务器地址和端口,默认端口为1080
-T/--upload-file 指定上传文件路径
-o/--output 指定输出文件名
--retry 指定重试次数
-e/--referer 指定引用地址
-I/--head 只返回header信息,使用HEAD请求
-u/--user 设置服务器用户和密码
-O:根据服务器上的文件名,会自动在本地存在
-r/--range 从 HTTP/1.1 或 FTP 服务器检索字节范围
-T/--upload-file 上传文件
使用示例
1、抓取页面内容到文件中
[root@xi mytest]# curl -o home.html -- 将百度首页的内容抓取到home.html中
[root@xi mytest]#curl -o #2_#1.jpg~{A,B}/[001-201].JPG
因为A/B下的文件名都是001、002...、201,所以下载的文件同名,所以自定义下载的文件名变成这样: 原文:A/00< @1.JPG ---> 下载后:001-A.JPG 原文:B/001.JPG ---> 下载后:001-B.JPG
2、使用-O(大写),后面的url必须特定于某个文件,否则不会被抓到。你也可以使用正则表达式来抓取东西
[root@xi mytest]# curl -O
结果如下:
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 1575 100 1575 0 0 14940 0 --:--:-- --:--:-- --:--:-- 1538k
在当前执行目录中会生成一张bdlogo.gif的图片。
[root@xi mytest]# curl -O[1-10].JPG --下载屏幕1.jpg~screen10.jpg
3、模拟表单信息、模拟登录、保存cookie信息
[root@xi mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=******
4、模拟表单信息、模拟登录、保存表头信息
[root@xi mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=******
由
生成的cookie
-c(小写)与-D中的cookie不同。
5、使用cookie文件
[root@xi mytest]# curl -b ./cookie_c.txt
6、从断点恢复,-C(大写)
[root@xi mytest]# curl -C -O
7、发送数据,最好使用登录页面测试,因为你传值后,curl会抓取数据回来,可以查看是否传值成功
[root@xi mytest]# curl -d log=aaaa
8、显示爬取错误,下面的例子清楚的显示出来。
[root@xi mytest]# curl -f
curl:(22)请求的URL返回错误:404
[root@xi mytest]# curl
404,未找到
9。伪造源地址,有的网站会判断并请求源地址,防止盗链。
[root@xi mytest]# curl -e:///wp-login.php
10、当我们经常用curl做别人的事情的时候,人家会屏蔽你的IP,这个时候我们可以使用代理
[root@xi mytest]# curl -x 24.10.28.84:32779 -o home.html
11,对于较大的东西,我们可以分段下载
[root@xi mytest]# curl -r 0-100 -o img.part1
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 105 0 --:--:-- --:--:-- --:--:-- 0
[root@xi mytest]# curl -r 100-200 -o img.part2
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 57 0 0:00:01 0:00:01 --:--:-- 0
[root@xi mytest]# curl -r 200- -o img.part3
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 104k 100 104k 0 0 52793 0 0:00:02 0:00:02 --:--:-- 88961
[root@xi mytest]# ls |grep part | xargs du -sh
4.0K one.part1
112K 三.part3
4.0K two.part2
使用的时候,cat一下就可以了,cat img.part* >img.jpg
12,不会显示下载进度信息
[root@xi mytest]# curl -s -o aaa.jpg
13、显示下载进度条
[root@xi mytest]# curl -0(使用http1.0协议的请求)
############################################## # ######################### 100.0%
14、通过ftp下载文件
[xifj@Xi ~]$ curl -u 用户名:密码 -O
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
[xifj@Xi ~]$ curl -u 用户名:密码 -O
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
或者使用下面的方法
[xifj@Xi ~]$ curl -O ftp://username:password@ip:port/demo/curtain/bbstudy_files/style.css
[xifj@Xi ~]$ curl -O ftp://username:password@ip:port/demo/curtain/bbstudy_files/style.css
15、通过ftp上传
[xifj@Xi ~]$ curl -T test.sql ftp://username:password@ip:port/demo/curtain/bbstudy_files/
[xifj@Xi ~]$ curl -T test.sql ftp://username:password@ip:port/demo/curtain/bbstudy_files/
15、模拟浏览器头部
[xifj@Xi ~]$ curl -A "Mozilla/4.0 (兼容; MSIE 6.0; Windows NT 5.0)" -x 12< @3.45.67.89:1080 -o page.html -D cookie0001.txt
16,PUT,GET,POST
比如curl -T localfile~zz/abc.cgi,此时使用的协议是HTTP PUT方式
刚才说到PUT,我自然会想到其他几种方法——GET和POST。
curl 抓取网页(和wget下载安装下载安装1、Ubuntu平台wget命令安装)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2022-02-12 11:17
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curlDownload
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl-obaidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -Obaidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应,也可以通过一段时间内下载获得的字节数间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、 代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装下载安装1、Ubuntu平台wget命令安装)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curlDownload
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl-obaidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -Obaidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应,也可以通过一段时间内下载获得的字节数间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、 代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(块传输编码(ChunkedTransfer)改变消息主体与实体主体的区别 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2022-02-11 12:19
)
分块传输编码
分块编码更改消息正文,以便消息正文以块的形式发送。每个块都有自己的大小指示符,紧跟在所有块之后的收录实体头字段的可选尾部。这允许发送者动态生成内容并携带有用的信息,接收者可以使用这些信息来确定是否收到了消息。
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 查看全部
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
curl 抓取网页(php中常用都实现更复杂的传输功能(post传输方式) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 42 次浏览 • 2022-02-01 10:03
)
CURL 是一个文件传输工具,它使用 URL 语法在命令行模式下工作。它支持许多协议。支持认证功能。比较复杂的传输函数一般用php实现。
实现的功能:
1、远程访问和采集内容
2、实现PHP网页版FTP上传下载
3、实现模拟登录:去一个邮件系统,curl可以模拟cookies
4、 实现接口对接(API)、数据传输等:通过平台发送短信,捕获并传输传输的信息。
5、实现模拟cookies等:有些属性只能在登录状态下操作。
如何使用CURL函数:
PHP默认不支持CURL,需要在php.ini中开启该功能
;extension=php_curl.dll 去掉分号
1整个操作的第一步是使用cur_init()函数进行初始化
$curl = curl_init(‘www.gaodaima.com')
3.设置完成后,执行事务 curl_exec($curl);2.使用 curl_setopt() 函数设置选项。
4 最后关闭 curl_close();
使用PHP CURL实现传输和获取功能(后传方式):获取远程网页数据
$user = "admin";$pass = "admin";$curlPost= "user=$user&pass=$pass";$ch = curl_init(); //初始化一个CURL对象curl_setopt($ch, CURLOPT_URL,"http://localhost/edu/login.php");//设置你所需要抓取的URLcurl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中假设上面的0换成1的话,那么接下来的$data就需要echo一下。curl_setopt($ch, CURLOPT_POST, 1);//post提交curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);//运行curl,请求网页。curl_close($ch);[/code]
实现远程模拟登录最基本的部分。
curl还需要配置用户名和密码,但是被浏览器隐藏了。
================================================ === =================================\
curl 模拟登录
模拟登录:即使不登录php100论坛,也可以查看相应信息。
分析登录字段->登录后保留cookie->读取cookie并跳转到相关页面->抓取次数
1、模拟登录后创建文件保存cookie内容
2、通过读取生成的cookie内容模拟用户登录状态
3、去相关页面获取你需要的东西
tempname 创建一个临时文件
tempnam() 函数创建一个具有唯一文件名的临时文件。如果成功,该函数返回新的临时文件名。失败时返回 false。
tempnam(目录,前缀)
参数说明
dir 必需。指定创建临时文件的目录。
前缀是必需的。指定文件名的开头。
相当于,fopen fwirte fclose
它可以返回一个布尔值。使用第三方登录你的QQ和msn是非常危险的,因为它可以记录你的登录状态,并窃取你的用户名和密码。
使用CURL模拟登录PHP100论坛
1、分析输入框字段名和登录所需字段个数
2、保存cookie模拟登录,获取会员金币数量
代码:
//初始化一个 cURL 对象$curl = curl_init();//设置你需要抓取的URLcurl_setopt($curl, CURLOPT_URL," http://www.baidu.com ");//设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//运行cURL,请求网页$data = curl_exec($curl);//关闭URL请求curl_close($curl);$user = "admin";$pass = "admin100";$curlPost= "user=$user&pass=$pa本文来源gaodai#ma#com搞*!代#%^码$网!搞代gaodaima码ss";$ch = curl_init();curl_setopt($ch, CURLOPT_URL," http://localhost/curl/login.php ");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);curl_close($ch);?>if($_POST['user']=="admin"){ echo"";}else{ echo"";}//print_r($_POST);?> 查看全部
curl 抓取网页(php中常用都实现更复杂的传输功能(post传输方式)
)
CURL 是一个文件传输工具,它使用 URL 语法在命令行模式下工作。它支持许多协议。支持认证功能。比较复杂的传输函数一般用php实现。
实现的功能:
1、远程访问和采集内容
2、实现PHP网页版FTP上传下载
3、实现模拟登录:去一个邮件系统,curl可以模拟cookies
4、 实现接口对接(API)、数据传输等:通过平台发送短信,捕获并传输传输的信息。
5、实现模拟cookies等:有些属性只能在登录状态下操作。
如何使用CURL函数:
PHP默认不支持CURL,需要在php.ini中开启该功能
;extension=php_curl.dll 去掉分号
1整个操作的第一步是使用cur_init()函数进行初始化
$curl = curl_init(‘www.gaodaima.com')
3.设置完成后,执行事务 curl_exec($curl);2.使用 curl_setopt() 函数设置选项。
4 最后关闭 curl_close();
使用PHP CURL实现传输和获取功能(后传方式):获取远程网页数据
$user = "admin";$pass = "admin";$curlPost= "user=$user&pass=$pass";$ch = curl_init(); //初始化一个CURL对象curl_setopt($ch, CURLOPT_URL,"http://localhost/edu/login.php");//设置你所需要抓取的URLcurl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中假设上面的0换成1的话,那么接下来的$data就需要echo一下。curl_setopt($ch, CURLOPT_POST, 1);//post提交curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);//运行curl,请求网页。curl_close($ch);[/code]
实现远程模拟登录最基本的部分。
curl还需要配置用户名和密码,但是被浏览器隐藏了。
================================================ === =================================\
curl 模拟登录
模拟登录:即使不登录php100论坛,也可以查看相应信息。
分析登录字段->登录后保留cookie->读取cookie并跳转到相关页面->抓取次数
1、模拟登录后创建文件保存cookie内容
2、通过读取生成的cookie内容模拟用户登录状态
3、去相关页面获取你需要的东西
tempname 创建一个临时文件
tempnam() 函数创建一个具有唯一文件名的临时文件。如果成功,该函数返回新的临时文件名。失败时返回 false。
tempnam(目录,前缀)
参数说明
dir 必需。指定创建临时文件的目录。
前缀是必需的。指定文件名的开头。
相当于,fopen fwirte fclose
它可以返回一个布尔值。使用第三方登录你的QQ和msn是非常危险的,因为它可以记录你的登录状态,并窃取你的用户名和密码。
使用CURL模拟登录PHP100论坛
1、分析输入框字段名和登录所需字段个数
2、保存cookie模拟登录,获取会员金币数量
代码:
//初始化一个 cURL 对象$curl = curl_init();//设置你需要抓取的URLcurl_setopt($curl, CURLOPT_URL," http://www.baidu.com ");//设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//运行cURL,请求网页$data = curl_exec($curl);//关闭URL请求curl_close($curl);$user = "admin";$pass = "admin100";$curlPost= "user=$user&pass=$pa本文来源gaodai#ma#com搞*!代#%^码$网!搞代gaodaima码ss";$ch = curl_init();curl_setopt($ch, CURLOPT_URL," http://localhost/curl/login.php ");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);curl_close($ch);?>if($_POST['user']=="admin"){ echo"";}else{ echo"";}//print_r($_POST);?>
curl 抓取网页( PHP扩展完成一个请求的抓取网页内容请求步骤介绍 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 44 次浏览 • 2022-01-31 11:07
PHP扩展完成一个请求的抓取网页内容请求步骤介绍
)
curl - 抓取网络数据
时间:2019-08-09
本文章为大家介绍curl-爬取网页数据,主要包括curl-爬取网页数据使用实例、应用技巧、基础知识点总结及注意事项,具有一定的参考价值,需要的朋友们可以参考一下。
使用 CURL 的 PHP 扩展发送 HTTP 请求一般有以下步骤:
1、初始化连接句柄;
2、配置参数;
3、执行并得到结果;
4、释放 CURL 连接句柄。
下面是curl模拟一个get请求,抓取网页内容:
$url="http://book.zongheng.com/chapt ... 3B%3B <br /><br />
//1.初始化curl
$ch=curl_init($url);//第一步,我们通过函数curl_init()创建一个新的curl会话
//2.设置传输选项(向服务器端发送请求)
//curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//3.执行curl请求(接收服务器端发送的数据)
$output=curl_exec($ch);
//4.关闭curl
curl_close($ch);
//匹配标题 第一章 惊蛰
preg_match_all("/(.*?)/", $output, $title);
//匹配p标签段落内容 <p>二月二,龙抬头。
preg_match_all("/
(.*?)/", $output, $match);
//. 是任意字符 可以匹配任何单个字符,
//.*? 表示匹配任意字符到下一个符合条件的字符
$a=$match[0];
echo implode( ' ',$a); <br /><br /> 查看全部
curl 抓取网页(
PHP扩展完成一个请求的抓取网页内容请求步骤介绍
)
curl - 抓取网络数据
时间:2019-08-09
本文章为大家介绍curl-爬取网页数据,主要包括curl-爬取网页数据使用实例、应用技巧、基础知识点总结及注意事项,具有一定的参考价值,需要的朋友们可以参考一下。
使用 CURL 的 PHP 扩展发送 HTTP 请求一般有以下步骤:
1、初始化连接句柄;
2、配置参数;
3、执行并得到结果;
4、释放 CURL 连接句柄。
下面是curl模拟一个get请求,抓取网页内容:
$url="http://book.zongheng.com/chapt ... 3B%3B <br /><br />
//1.初始化curl
$ch=curl_init($url);//第一步,我们通过函数curl_init()创建一个新的curl会话
//2.设置传输选项(向服务器端发送请求)
//curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//3.执行curl请求(接收服务器端发送的数据)
$output=curl_exec($ch);
//4.关闭curl
curl_close($ch);
//匹配标题 第一章 惊蛰
preg_match_all("/(.*?)/", $output, $title);
//匹配p标签段落内容 <p>二月二,龙抬头。
preg_match_all("/
(.*?)/", $output, $match);
//. 是任意字符 可以匹配任何单个字符,
//.*? 表示匹配任意字符到下一个符合条件的字符
$a=$match[0];
echo implode( ' ',$a); <br /><br />
curl 抓取网页(curl和wget抓取实例抓取网页(1)_html文件)
网站优化 • 优采云 发表了文章 • 0 个评论 • 51 次浏览 • 2022-01-31 10:13
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL和proxy代理
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据包丢失/服务器宕机等原因,网页暂时无法成功下载。这时候,你可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认80)
注意:-x代表代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21 8.107.21.252:8080下载百度首页,最后218.107.21.252:8080通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(curl和wget抓取实例抓取网页(1)_html文件)
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL和proxy代理
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据包丢失/服务器宕机等原因,网页暂时无法成功下载。这时候,你可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认80)
注意:-x代表代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21 8.107.21.252:8080下载百度首页,最后218.107.21.252:8080通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2022-01-30 20:09
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:sudoapt)
网站优化 • 优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2022-01-28 08:01
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账号登录,不需要密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后,格式为wget-1.11.4-1-setup.exe,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl /-o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认80)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget是通过代理下载的,和curl不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd~)下新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:sudoapt)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账号登录,不需要密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后,格式为wget-1.11.4-1-setup.exe,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl /-o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认80)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget是通过代理下载的,和curl不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd~)下新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(运用PHP的cURL库可以基本和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-01-27 15:25
使用 PHP 的 cURL 库可以基本有效的抓取网页。你只需要运行一个脚本,然后分析你爬取的网页,然后你就可以通过编程方式获取你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,甚至是基本的 Web 内容获取,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个 PHP 库。
启用 cURL 配置
首先,我们要确保我们的 PHP 可以启用这个库,你可以使用 php_info() 函数来获取这些信息。
如果可以在网页上看到上面的输入,则说明 cURL 库已启用。
如果你看到它,那么你需要配置你的 PHP 并启用这个库。如果你是在windows平台,那是很基础的,你需要改变你的php.ini文件的配置,找到php_curl.dll,去掉分号注释。如下:
//撤消下一条评论
扩展=php_curl.dll
如果你在 Linux 上,那么你需要重新编译你的 PHP。编辑时需要打开编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,以上就是一个小例程:
如何发布数据
上面是爬取网页的代码,上面是POST数据到网页。假设我们有一个处理表单的 URL,该表单接受两个表单字段,一个用于电话号码,一个用于文本消息的文本。 查看全部
curl 抓取网页(运用PHP的cURL库可以基本和有效地去抓网页。)
使用 PHP 的 cURL 库可以基本有效的抓取网页。你只需要运行一个脚本,然后分析你爬取的网页,然后你就可以通过编程方式获取你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,甚至是基本的 Web 内容获取,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个 PHP 库。
启用 cURL 配置
首先,我们要确保我们的 PHP 可以启用这个库,你可以使用 php_info() 函数来获取这些信息。
如果可以在网页上看到上面的输入,则说明 cURL 库已启用。
如果你看到它,那么你需要配置你的 PHP 并启用这个库。如果你是在windows平台,那是很基础的,你需要改变你的php.ini文件的配置,找到php_curl.dll,去掉分号注释。如下:
//撤消下一条评论
扩展=php_curl.dll
如果你在 Linux 上,那么你需要重新编译你的 PHP。编辑时需要打开编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,以上就是一个小例程:
如何发布数据
上面是爬取网页的代码,上面是POST数据到网页。假设我们有一个处理表单的 URL,该表单接受两个表单字段,一个用于电话号码,一个用于文本消息的文本。
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2022-01-23 06:13
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需输入密码;root账户登录,无需输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接以curl.exe的格式复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需输入密码;root账户登录,无需输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接以curl.exe的格式复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(PHP爬虫实现方法直接采用PHPcurl来抓取数据socket方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2022-02-27 13:01
PHP爬虫总结
PHP爬虫 网上的爬虫很多很多,五花八门,但是大家都不喜欢用PHP写爬虫。这可能是由于不稳定和组件库太少。不管怎样,PHP 还是很容易写的。 curl实现方式直接使用PHP curl来抓取数据。 socket方法采用最原创的socket方法。有一个https:hightmanpspider项目,非常完美。它也使用我使用腾讯云的主机。 curl方法利用爬取网页的步骤设置种子url,一般是网站的域名。通过这个首页一步步抓取种子url,分析这个页面,获取所有相关url,根据是否抓取外站策略判断。处理url判断是否是需要爬取的网页。如果是要爬取的网页,则处理存储。如果没有,请更新队列。 PHP爬虫推荐有多种:https:smartengphp-crawler https:smartengpspider 特点 轻量级、内核 简单易用 基于Redis的调度插件,支持分布式和断点抓取,易于扩展和定制,可以自定义调度插件-根据您的需要随时进入
1.1K 查看全部
curl 抓取网页(PHP爬虫实现方法直接采用PHPcurl来抓取数据socket方法)
PHP爬虫总结
PHP爬虫 网上的爬虫很多很多,五花八门,但是大家都不喜欢用PHP写爬虫。这可能是由于不稳定和组件库太少。不管怎样,PHP 还是很容易写的。 curl实现方式直接使用PHP curl来抓取数据。 socket方法采用最原创的socket方法。有一个https:hightmanpspider项目,非常完美。它也使用我使用腾讯云的主机。 curl方法利用爬取网页的步骤设置种子url,一般是网站的域名。通过这个首页一步步抓取种子url,分析这个页面,获取所有相关url,根据是否抓取外站策略判断。处理url判断是否是需要爬取的网页。如果是要爬取的网页,则处理存储。如果没有,请更新队列。 PHP爬虫推荐有多种:https:smartengphp-crawler https:smartengpspider 特点 轻量级、内核 简单易用 基于Redis的调度插件,支持分布式和断点抓取,易于扩展和定制,可以自定义调度插件-根据您的需要随时进入
1.1K
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2022-02-24 23:21
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后,格式为wget-1.11.4-1-setup.exe,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后,格式为wget-1.11.4-1-setup.exe,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(PHPheader调试很有用的原因及解决办法(一))
网站优化 • 优采云 发表了文章 • 0 个评论 • 38 次浏览 • 2022-02-24 03:19
[header_size] => 312
[request_size] => 61
[文件时间] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[总时间] => 0.172
[namelookup_time] => 0.016
[连接时间] => 0.063
[pretransfer_time] => 0.063
[大小上传] => 0
[size_download] => 14658[speed_download] => 85220
[speed_upload] => 0
[下载内容长度] => 14658
[上传内容长度] => 0
[starttransfer_time] => 0.125
[重定向时间] => 0
[certinfo] => 数组
(
)
[redirect_url] =>
)
2、这些信息对于调试非常有用。例如,cURL在爬取时,由于网络等原因,爬取的数据可能不完整。这就是我们如何从获得的数据中计算文件大小的方法。 ,然后与 curl_getinfo() 得到的比较。如果大小相等,则确定下载正确,否则重复尝试。
我们来看一个抓图的例子:
代码如下:
PHP
header("Content-Type: image/png");
//1、初始化
$ch = curl_init();
//2、设置选项,包括URL
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,1);
//3、执行并获取内容
$res = curl_exec($ch);
//获取信息
$info = curl_getinfo($ch);
//4、释放资源
curl_close($ch);
file_put_contents("d:/aa.png",$res);
$size = filesize("d:/aa.png");
if ($size != $info['size_download']) {
echo "下载的数据不完整,请重新下载";
} 否则 {
echo "下载数据完成";
}
3、使用 POST 方法在 cURL 中发送数据
代码如下:
PHP
$ch = curl_init();
$data = array('name'=>'kelly','age'=>27,'sex'=>1);
curl_setopt($ch,"");
curl_setopt($ch,1);
//设置为帖子
curl_setopt($ch,CURLOPT_POST,1);
//添加post变量
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
你可以用这个方法模拟一条消息,也可以坐在浇水机器人上,思路是一样的
4、使用 cURL 上传文件
代码如下:
'美女',"上传"=>"@a.zip");
$ch = curl_init();
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
注意:发送文件时,在文件名前加上@,并使用完整路径
5、cURL 设置
其实cURL有很多配置选项,这些选项是cURL的灵魂,通过setopt()来设置,下面总结了一些比较常见和重要的配置项,希望读者以后使用cURL。帮助:
CURLOPT_AUTOREFERER:根据location:重定向时,自动在header中设置Referer:信息
CURLOPT_COOKIESESSION:启用后,cURL 将紧密传递会话 cookie,而忽略其他 cookie
CURLOPT_HEADER:将头信息作为数据流输出
CURLOPT_INFILESIZE:设置上传文件的字节大小
CURLOPT_MAXCONNECTS:允许的最大连接数
CURLOPT_MAXREDIRS:指定 HTTP 重定向的最大数量
CURLOPT_COOKIE:设置 HTTP 请求的“cookie:”部分的内容。多个 cookie 后跟一个分号和分号后的一个空格
CURLOPT_POSTFIELDS:所有数据都使用HTTP协议中的“POST”操作发送文件,文件名前加@前缀并使用完整路径
......
更多配置项请参考PHP手册
cURL 很强大,它是一个通用库,不是 PHP 独有的。
希望读者通过学习这篇博文中的几个经典 cURL 示例有所收获。
总结
如果你觉得编程之家网站的内容还不错,欢迎你把编程之家网站推荐给你的程序员朋友。 查看全部
curl 抓取网页(PHPheader调试很有用的原因及解决办法(一))
[header_size] => 312
[request_size] => 61
[文件时间] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[总时间] => 0.172
[namelookup_time] => 0.016
[连接时间] => 0.063
[pretransfer_time] => 0.063
[大小上传] => 0
[size_download] => 14658[speed_download] => 85220
[speed_upload] => 0
[下载内容长度] => 14658
[上传内容长度] => 0
[starttransfer_time] => 0.125
[重定向时间] => 0
[certinfo] => 数组
(
)
[redirect_url] =>
)
2、这些信息对于调试非常有用。例如,cURL在爬取时,由于网络等原因,爬取的数据可能不完整。这就是我们如何从获得的数据中计算文件大小的方法。 ,然后与 curl_getinfo() 得到的比较。如果大小相等,则确定下载正确,否则重复尝试。
我们来看一个抓图的例子:
代码如下:
PHP
header("Content-Type: image/png");
//1、初始化
$ch = curl_init();
//2、设置选项,包括URL
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,1);
//3、执行并获取内容
$res = curl_exec($ch);
//获取信息
$info = curl_getinfo($ch);
//4、释放资源
curl_close($ch);
file_put_contents("d:/aa.png",$res);
$size = filesize("d:/aa.png");
if ($size != $info['size_download']) {
echo "下载的数据不完整,请重新下载";
} 否则 {
echo "下载数据完成";
}
3、使用 POST 方法在 cURL 中发送数据
代码如下:
PHP
$ch = curl_init();
$data = array('name'=>'kelly','age'=>27,'sex'=>1);
curl_setopt($ch,"");
curl_setopt($ch,1);
//设置为帖子
curl_setopt($ch,CURLOPT_POST,1);
//添加post变量
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
你可以用这个方法模拟一条消息,也可以坐在浇水机器人上,思路是一样的
4、使用 cURL 上传文件
代码如下:
'美女',"上传"=>"@a.zip");
$ch = curl_init();
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
注意:发送文件时,在文件名前加上@,并使用完整路径
5、cURL 设置
其实cURL有很多配置选项,这些选项是cURL的灵魂,通过setopt()来设置,下面总结了一些比较常见和重要的配置项,希望读者以后使用cURL。帮助:
CURLOPT_AUTOREFERER:根据location:重定向时,自动在header中设置Referer:信息
CURLOPT_COOKIESESSION:启用后,cURL 将紧密传递会话 cookie,而忽略其他 cookie
CURLOPT_HEADER:将头信息作为数据流输出
CURLOPT_INFILESIZE:设置上传文件的字节大小
CURLOPT_MAXCONNECTS:允许的最大连接数
CURLOPT_MAXREDIRS:指定 HTTP 重定向的最大数量
CURLOPT_COOKIE:设置 HTTP 请求的“cookie:”部分的内容。多个 cookie 后跟一个分号和分号后的一个空格
CURLOPT_POSTFIELDS:所有数据都使用HTTP协议中的“POST”操作发送文件,文件名前加@前缀并使用完整路径
......
更多配置项请参考PHP手册
cURL 很强大,它是一个通用库,不是 PHP 独有的。
希望读者通过学习这篇博文中的几个经典 cURL 示例有所收获。
总结
如果你觉得编程之家网站的内容还不错,欢迎你把编程之家网站推荐给你的程序员朋友。
curl 抓取网页(curl和wget下载安装1、Ubuntu平台wget命令安装:sudo)
网站优化 • 优采云 发表了文章 • 0 个评论 • 59 次浏览 • 2022-02-22 04:11
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,无需输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:
curl下载地址:
wget和curl包下载地址:
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:WindowsSystem32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据丢包/服务器宕机等原因,导致网页暂时无法下载成功。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录下(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(curl和wget下载安装1、Ubuntu平台wget命令安装:sudo)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,无需输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:
curl下载地址:
wget和curl包下载地址:
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:WindowsSystem32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据丢包/服务器宕机等原因,导致网页暂时无法下载成功。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录下(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(curl抓取网页视频的教程详细教程三个必须要先设置的参数)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2022-02-17 12:06
curl抓取网页视频的教程详细教程三个必须要先设置的参数,解读后其中,下载地址是array(源主机,目标地址,协议)这三个参数是需要确定的,关键是协议也就是airtime(机器可以无限次工作时间)也就是服务器可以持续开机的时间,我们必须设置2秒的array,如果设置3秒,那就等于异步下载了,不能存储实际抓取速度-根据官方说法,10mb每秒也是可以抓取一个视频的!因为手机端抓取我就设置了300mb每秒了!其实android和ios都可以抓取流媒体文件的!流媒体文件的格式可以是http://,也可以是一个图片文件,或者其他通过rtmp协议(即传输协议)传输的内容!那么我们应该抓取什么样的格式呢?1。
网站的视频源只有文字并且是文件的格式,不带图片,也没有协议代码或者代码解析2。网站的视频一般为http://加密视频要解密,至少要解密字幕,才能正常的接收你下载到本地的视频,比如字幕文件!google搜索"如何下载视频",search和点击一个国内的网站没有反应,那么我们该如何抓取你想要下载的视频的呢?而抓取哪些视频呢?这个就要靠一个官方配套的地址,点击下载即可,注意手机平板都可以抓取的!顺带吐槽一下太多网站不支持一键下载,我都抓取完,依然要请大佬们收费,但是实际上官方自己并不会做这种限制,当然他也不可能做,但是大家的需求而已!。 查看全部
curl 抓取网页(curl抓取网页视频的教程详细教程三个必须要先设置的参数)
curl抓取网页视频的教程详细教程三个必须要先设置的参数,解读后其中,下载地址是array(源主机,目标地址,协议)这三个参数是需要确定的,关键是协议也就是airtime(机器可以无限次工作时间)也就是服务器可以持续开机的时间,我们必须设置2秒的array,如果设置3秒,那就等于异步下载了,不能存储实际抓取速度-根据官方说法,10mb每秒也是可以抓取一个视频的!因为手机端抓取我就设置了300mb每秒了!其实android和ios都可以抓取流媒体文件的!流媒体文件的格式可以是http://,也可以是一个图片文件,或者其他通过rtmp协议(即传输协议)传输的内容!那么我们应该抓取什么样的格式呢?1。
网站的视频源只有文字并且是文件的格式,不带图片,也没有协议代码或者代码解析2。网站的视频一般为http://加密视频要解密,至少要解密字幕,才能正常的接收你下载到本地的视频,比如字幕文件!google搜索"如何下载视频",search和点击一个国内的网站没有反应,那么我们该如何抓取你想要下载的视频的呢?而抓取哪些视频呢?这个就要靠一个官方配套的地址,点击下载即可,注意手机平板都可以抓取的!顺带吐槽一下太多网站不支持一键下载,我都抓取完,依然要请大佬们收费,但是实际上官方自己并不会做这种限制,当然他也不可能做,但是大家的需求而已!。
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2022-02-17 04:09
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据丢包/服务器宕机等原因,导致网页暂时无法下载成功。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应,也可以通过一段时间内下载获得的字节数间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、 代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据丢包/服务器宕机等原因,导致网页暂时无法下载成功。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应,也可以通过一段时间内下载获得的字节数间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、 代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(块传输编码(ChunkedTransfer)改变消息主体与实体主体的区别 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-02-16 19:17
)
分块传输编码
分块编码更改消息正文,以便消息正文以块的形式发送。每个块都有自己的大小指示符,紧跟在所有块之后的收录实体头字段的可选尾部。这允许发送者动态生成内容并携带有用的信息,接收者可以使用这些信息来确定是否收到了消息。
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,然后通过它下载百度主页,最后将下载的百度主页转curl到本地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 查看全部
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,然后通过它下载百度主页,最后将下载的百度主页转curl到本地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
curl 抓取网页( hebedichPHP利用Curl实现并发多线程下载文件以上就是)
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2022-02-15 10:21
hebedichPHP利用Curl实现并发多线程下载文件以上就是)
PHP结合curl实现多线程爬取
更新时间:2015-07-09 11:09:13 发布者:hebedich
PHP可以使用Curl来完成各种文件传输操作,比如模拟浏览器发送GET、POST请求等。但是由于PHP语言本身不支持多线程,开发爬虫程序的效率不高,所以经常需要使用 Curl Multi Functions。实现并发多线程访问多个url地址实现并发多线程抓取网页或下载文件的功能
PHP结合curl实现多线程爬取
让我们再看几个例子
(1)下面的代码是爬取多个URL,然后将爬取到的URL的页面代码写入到指定文件中
$urls = array(
'https://www.jb51.net/',
'http://www.google.com/',
'http://www.example.com/'
); // 设置要抓取的页面URL
$save_to='/test.txt'; // 把抓取的代码写入该文件
$st = fopen($save_to,"a");
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 将爬取的代码写入文件
curl_multi_add_handle ($mh,$conn[$i]);
} // 初始化
do {
curl_multi_exec($mh,$active);
} while ($active); // 执行
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
} // 结束清理
curl_multi_close($mh);
fclose($st);
(2)下面的代码和上面类似,只不过这个地方是先把获取到的代码放到一个变量中,然后再将获取到的内容写入到指定的文件中
$urls = array(
'https://www.jb51.net/',
'http://www.google.com/',
'http://www.example.com/'
);
$save_to='/test.txt'; // 把抓取的代码写入该文件
$st = fopen($save_to,"a");
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true); // 不将爬取代码写到浏览器,而是转化为字符串
curl_multi_add_handle ($mh,$conn[$i]);
}
do {
curl_multi_exec($mh,$active);
} while ($active);
foreach ($urls as $i => $url) {
$data = curl_multi_getcontent($conn[$i]); // 获得爬取的代码字符串
fwrite($st,$data); // 将字符串写入文件
} // 获得数据变量,并写入文件
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
fclose($st);
(3)以下代码实现使用PHP的Curl Functions实现并发多线程下载文件
$urls=array(
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip'
);
$save_to='./home/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
$g=$save_to.basename($url);
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);$urls=array(
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip'
);
$save_to='./home/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
$g=$save_to.basename($url);
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);
以上就是本文的全部内容,希望大家喜欢。 查看全部
curl 抓取网页(
hebedichPHP利用Curl实现并发多线程下载文件以上就是)
PHP结合curl实现多线程爬取
更新时间:2015-07-09 11:09:13 发布者:hebedich
PHP可以使用Curl来完成各种文件传输操作,比如模拟浏览器发送GET、POST请求等。但是由于PHP语言本身不支持多线程,开发爬虫程序的效率不高,所以经常需要使用 Curl Multi Functions。实现并发多线程访问多个url地址实现并发多线程抓取网页或下载文件的功能
PHP结合curl实现多线程爬取
让我们再看几个例子
(1)下面的代码是爬取多个URL,然后将爬取到的URL的页面代码写入到指定文件中
$urls = array(
'https://www.jb51.net/',
'http://www.google.com/',
'http://www.example.com/'
); // 设置要抓取的页面URL
$save_to='/test.txt'; // 把抓取的代码写入该文件
$st = fopen($save_to,"a");
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 将爬取的代码写入文件
curl_multi_add_handle ($mh,$conn[$i]);
} // 初始化
do {
curl_multi_exec($mh,$active);
} while ($active); // 执行
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
} // 结束清理
curl_multi_close($mh);
fclose($st);
(2)下面的代码和上面类似,只不过这个地方是先把获取到的代码放到一个变量中,然后再将获取到的内容写入到指定的文件中
$urls = array(
'https://www.jb51.net/',
'http://www.google.com/',
'http://www.example.com/'
);
$save_to='/test.txt'; // 把抓取的代码写入该文件
$st = fopen($save_to,"a");
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true); // 不将爬取代码写到浏览器,而是转化为字符串
curl_multi_add_handle ($mh,$conn[$i]);
}
do {
curl_multi_exec($mh,$active);
} while ($active);
foreach ($urls as $i => $url) {
$data = curl_multi_getcontent($conn[$i]); // 获得爬取的代码字符串
fwrite($st,$data); // 将字符串写入文件
} // 获得数据变量,并写入文件
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
fclose($st);
(3)以下代码实现使用PHP的Curl Functions实现并发多线程下载文件
$urls=array(
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip'
);
$save_to='./home/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
$g=$save_to.basename($url);
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);$urls=array(
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip',
'https://www.jb51.net/5w.zip'
);
$save_to='./home/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
$g=$save_to.basename($url);
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);
以上就是本文的全部内容,希望大家喜欢。
curl 抓取网页(使用php的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-02-14 10:15
使用php的cURL库可以轻松高效的抓取网页。你只需要运行一个脚本,然后分析你爬取的网页,然后你就可以通过编程方式获取你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,甚至只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个 PHP 库。
启用 cURL 设置
首先,我们必须确定我们的 PHP 是否启用了这个库。您可以使用 php_info() 函数获取此信息。
﹤?php
phpinfo();
?﹥
如果您可以在网页上看到以下输出,则说明 cURL 库已启用。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台下,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,取消之前的分号注释。如下:
//取消下在的注释
extension=php_curl.dll
如果你在linux下,那么你需要重新编译你的PHP。编辑时需要打开编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这是一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置需要抓取的网址
curl_setopt($curl, CURLOPT_URL, '');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置 cURL 参数,是否将结果保存为字符串或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL,请求网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
//显示获取到的数据
var_dump($data);
如何发布数据
上面是爬取网页的代码,下面是POST数据到网页。假设我们有一个处理表单的 URL,该表单接受两个表单字段,一个用于电话号码,一个用于文本消息的文本。
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序我们可以看出,使用CURLOPT_POST来设置HTTP协议的POST方法而不是GET方法,然后用CURLOPT_POSTFIELDS设置POST数据。
关于代理服务器
以下是如何使用代理服务器的示例。请注意突出显示的代码,代码很简单,我不需要多说。
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于 SSL 和 Cookie 查看全部
curl 抓取网页(使用php的cURL库可以简单和有效地去抓网页。)
使用php的cURL库可以轻松高效的抓取网页。你只需要运行一个脚本,然后分析你爬取的网页,然后你就可以通过编程方式获取你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,甚至只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个 PHP 库。
启用 cURL 设置
首先,我们必须确定我们的 PHP 是否启用了这个库。您可以使用 php_info() 函数获取此信息。
﹤?php
phpinfo();
?﹥
如果您可以在网页上看到以下输出,则说明 cURL 库已启用。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台下,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,取消之前的分号注释。如下:
//取消下在的注释
extension=php_curl.dll
如果你在linux下,那么你需要重新编译你的PHP。编辑时需要打开编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这是一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置需要抓取的网址
curl_setopt($curl, CURLOPT_URL, '');
// 设置标题
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置 cURL 参数,是否将结果保存为字符串或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL,请求网页
$data = curl_exec($curl);
// 关闭 URL 请求
curl_close($curl);
//显示获取到的数据
var_dump($data);
如何发布数据
上面是爬取网页的代码,下面是POST数据到网页。假设我们有一个处理表单的 URL,该表单接受两个表单字段,一个用于电话号码,一个用于文本消息的文本。
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' .
urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序我们可以看出,使用CURLOPT_POST来设置HTTP协议的POST方法而不是GET方法,然后用CURLOPT_POSTFIELDS设置POST数据。
关于代理服务器
以下是如何使用代理服务器的示例。请注意突出显示的代码,代码很简单,我不需要多说。
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于 SSL 和 Cookie
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2022-02-13 09:27
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页( curl远不止前面所说的那些功能,你知道几个?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-02-13 09:23
curl远不止前面所说的那些功能,你知道几个?)
使用说明
curl命令是一个功能强大的网络工具,可以通过http、ftp等方式下载和上传文件。其实curl远不止上面提到的功能。您可以通过 man curl 阅读手册页以获取更多信息。 wget 是一个类似的工具。
curl 命令是使用 libcurl 库实现的。 libcurl 库通常在 C 程序中用于处理 HTTP 请求。 curlpp 是 libcurl 的 C++ 包。这些东西可以用在web抓取、网络监控等开发中,curl命令可以帮助解决开发过程中遇到的问题。
常用参数
curl命令的参数很多,这里只列出我用过的,尤其是shell脚本中的。
-A:请随意指定您自己为本次访问声明的浏览器信息
-b/--cookie cookie 字符串或文件读取位置,使用 option 将最后一个 cookie 信息附加到 http 请求中。
-c/--cookie-jar 操作完成后将cookies写入该文件
-C/--continue-在断点处继续
-d/--data HTTP POST方法传输数据
-D/--dump-header 将头信息写入该文件
-F/--form 模拟http表单提交数据
-v/--verbose 小写的v参数用于打印更多信息,包括发送的请求信息,在调试脚本时特别有用。
-m/--max-time 指定处理的最大持续时间
-H/--header 指定请求头参数
-s/--slent reduce输出信息,如进度
--connect-timeout 指定尝试连接的最长时间
-x/--代理
指定代理服务器地址和端口,默认端口为1080
-T/--upload-file 指定上传文件路径
-o/--output 指定输出文件名
--retry 指定重试次数
-e/--referer 指定引用地址
-I/--head 只返回header信息,使用HEAD请求
-u/--user 设置服务器用户和密码
-O:根据服务器上的文件名,会自动在本地存在
-r/--range 从 HTTP/1.1 或 FTP 服务器检索字节范围
-T/--upload-file 上传文件
使用示例
1、抓取页面内容到文件中
[root@xi mytest]# curl -o home.html -- 将百度首页的内容抓取到home.html中
[root@xi mytest]#curl -o #2_#1.jpg~{A,B}/[001-201].JPG
因为A/B下的文件名都是001、002...、201,所以下载的文件同名,所以自定义下载的文件名变成这样: 原文:A/00< @1.JPG ---> 下载后:001-A.JPG 原文:B/001.JPG ---> 下载后:001-B.JPG
2、使用-O(大写),后面的url必须特定于某个文件,否则不会被抓到。你也可以使用正则表达式来抓取东西
[root@xi mytest]# curl -O
结果如下:
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 1575 100 1575 0 0 14940 0 --:--:-- --:--:-- --:--:-- 1538k
在当前执行目录中会生成一张bdlogo.gif的图片。
[root@xi mytest]# curl -O[1-10].JPG --下载屏幕1.jpg~screen10.jpg
3、模拟表单信息、模拟登录、保存cookie信息
[root@xi mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=******
4、模拟表单信息、模拟登录、保存表头信息
[root@xi mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=******
由
生成的cookie
-c(小写)与-D中的cookie不同。
5、使用cookie文件
[root@xi mytest]# curl -b ./cookie_c.txt
6、从断点恢复,-C(大写)
[root@xi mytest]# curl -C -O
7、发送数据,最好使用登录页面测试,因为你传值后,curl会抓取数据回来,可以查看是否传值成功
[root@xi mytest]# curl -d log=aaaa
8、显示爬取错误,下面的例子清楚的显示出来。
[root@xi mytest]# curl -f
curl:(22)请求的URL返回错误:404
[root@xi mytest]# curl
404,未找到
9。伪造源地址,有的网站会判断并请求源地址,防止盗链。
[root@xi mytest]# curl -e:///wp-login.php
10、当我们经常用curl做别人的事情的时候,人家会屏蔽你的IP,这个时候我们可以使用代理
[root@xi mytest]# curl -x 24.10.28.84:32779 -o home.html
11,对于较大的东西,我们可以分段下载
[root@xi mytest]# curl -r 0-100 -o img.part1
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 105 0 --:--:-- --:--:-- --:--:-- 0
[root@xi mytest]# curl -r 100-200 -o img.part2
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 57 0 0:00:01 0:00:01 --:--:-- 0
[root@xi mytest]# curl -r 200- -o img.part3
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 104k 100 104k 0 0 52793 0 0:00:02 0:00:02 --:--:-- 88961
[root@xi mytest]# ls |grep part | xargs du -sh
4.0K one.part1
112K 三.part3
4.0K two.part2
使用的时候,cat一下就可以了,cat img.part* >img.jpg
12,不会显示下载进度信息
[root@xi mytest]# curl -s -o aaa.jpg
13、显示下载进度条
[root@xi mytest]# curl -0(使用http1.0协议的请求)
############################################## # ######################### 100.0%
14、通过ftp下载文件
[xifj@Xi ~]$ curl -u 用户名:密码 -O
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
[xifj@Xi ~]$ curl -u 用户名:密码 -O
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
或者使用下面的方法
[xifj@Xi ~]$ curl -O ftp://username:password@ip:port/demo/curtain/bbstudy_files/style.css
[xifj@Xi ~]$ curl -O ftp://username:password@ip:port/demo/curtain/bbstudy_files/style.css
15、通过ftp上传
[xifj@Xi ~]$ curl -T test.sql ftp://username:password@ip:port/demo/curtain/bbstudy_files/
[xifj@Xi ~]$ curl -T test.sql ftp://username:password@ip:port/demo/curtain/bbstudy_files/
15、模拟浏览器头部
[xifj@Xi ~]$ curl -A "Mozilla/4.0 (兼容; MSIE 6.0; Windows NT 5.0)" -x 12< @3.45.67.89:1080 -o page.html -D cookie0001.txt
16,PUT,GET,POST
比如curl -T localfile~zz/abc.cgi,此时使用的协议是HTTP PUT方式
刚才说到PUT,我自然会想到其他几种方法——GET和POST。 查看全部
curl 抓取网页(
curl远不止前面所说的那些功能,你知道几个?)
使用说明
curl命令是一个功能强大的网络工具,可以通过http、ftp等方式下载和上传文件。其实curl远不止上面提到的功能。您可以通过 man curl 阅读手册页以获取更多信息。 wget 是一个类似的工具。
curl 命令是使用 libcurl 库实现的。 libcurl 库通常在 C 程序中用于处理 HTTP 请求。 curlpp 是 libcurl 的 C++ 包。这些东西可以用在web抓取、网络监控等开发中,curl命令可以帮助解决开发过程中遇到的问题。
常用参数
curl命令的参数很多,这里只列出我用过的,尤其是shell脚本中的。
-A:请随意指定您自己为本次访问声明的浏览器信息
-b/--cookie cookie 字符串或文件读取位置,使用 option 将最后一个 cookie 信息附加到 http 请求中。
-c/--cookie-jar 操作完成后将cookies写入该文件
-C/--continue-在断点处继续
-d/--data HTTP POST方法传输数据
-D/--dump-header 将头信息写入该文件
-F/--form 模拟http表单提交数据
-v/--verbose 小写的v参数用于打印更多信息,包括发送的请求信息,在调试脚本时特别有用。
-m/--max-time 指定处理的最大持续时间
-H/--header 指定请求头参数
-s/--slent reduce输出信息,如进度
--connect-timeout 指定尝试连接的最长时间
-x/--代理
指定代理服务器地址和端口,默认端口为1080
-T/--upload-file 指定上传文件路径
-o/--output 指定输出文件名
--retry 指定重试次数
-e/--referer 指定引用地址
-I/--head 只返回header信息,使用HEAD请求
-u/--user 设置服务器用户和密码
-O:根据服务器上的文件名,会自动在本地存在
-r/--range 从 HTTP/1.1 或 FTP 服务器检索字节范围
-T/--upload-file 上传文件
使用示例
1、抓取页面内容到文件中
[root@xi mytest]# curl -o home.html -- 将百度首页的内容抓取到home.html中
[root@xi mytest]#curl -o #2_#1.jpg~{A,B}/[001-201].JPG
因为A/B下的文件名都是001、002...、201,所以下载的文件同名,所以自定义下载的文件名变成这样: 原文:A/00< @1.JPG ---> 下载后:001-A.JPG 原文:B/001.JPG ---> 下载后:001-B.JPG
2、使用-O(大写),后面的url必须特定于某个文件,否则不会被抓到。你也可以使用正则表达式来抓取东西
[root@xi mytest]# curl -O
结果如下:
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 1575 100 1575 0 0 14940 0 --:--:-- --:--:-- --:--:-- 1538k
在当前执行目录中会生成一张bdlogo.gif的图片。
[root@xi mytest]# curl -O[1-10].JPG --下载屏幕1.jpg~screen10.jpg
3、模拟表单信息、模拟登录、保存cookie信息
[root@xi mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=******
4、模拟表单信息、模拟登录、保存表头信息
[root@xi mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=******
由
生成的cookie
-c(小写)与-D中的cookie不同。
5、使用cookie文件
[root@xi mytest]# curl -b ./cookie_c.txt
6、从断点恢复,-C(大写)
[root@xi mytest]# curl -C -O
7、发送数据,最好使用登录页面测试,因为你传值后,curl会抓取数据回来,可以查看是否传值成功
[root@xi mytest]# curl -d log=aaaa
8、显示爬取错误,下面的例子清楚的显示出来。
[root@xi mytest]# curl -f
curl:(22)请求的URL返回错误:404
[root@xi mytest]# curl
404,未找到
9。伪造源地址,有的网站会判断并请求源地址,防止盗链。
[root@xi mytest]# curl -e:///wp-login.php
10、当我们经常用curl做别人的事情的时候,人家会屏蔽你的IP,这个时候我们可以使用代理
[root@xi mytest]# curl -x 24.10.28.84:32779 -o home.html
11,对于较大的东西,我们可以分段下载
[root@xi mytest]# curl -r 0-100 -o img.part1
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 105 0 --:--:-- --:--:-- --:--:-- 0
[root@xi mytest]# curl -r 100-200 -o img.part2
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 57 0 0:00:01 0:00:01 --:--:-- 0
[root@xi mytest]# curl -r 200- -o img.part3
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 104k 100 104k 0 0 52793 0 0:00:02 0:00:02 --:--:-- 88961
[root@xi mytest]# ls |grep part | xargs du -sh
4.0K one.part1
112K 三.part3
4.0K two.part2
使用的时候,cat一下就可以了,cat img.part* >img.jpg
12,不会显示下载进度信息
[root@xi mytest]# curl -s -o aaa.jpg
13、显示下载进度条
[root@xi mytest]# curl -0(使用http1.0协议的请求)
############################################## # ######################### 100.0%
14、通过ftp下载文件
[xifj@Xi ~]$ curl -u 用户名:密码 -O
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
[xifj@Xi ~]$ curl -u 用户名:密码 -O
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
或者使用下面的方法
[xifj@Xi ~]$ curl -O ftp://username:password@ip:port/demo/curtain/bbstudy_files/style.css
[xifj@Xi ~]$ curl -O ftp://username:password@ip:port/demo/curtain/bbstudy_files/style.css
15、通过ftp上传
[xifj@Xi ~]$ curl -T test.sql ftp://username:password@ip:port/demo/curtain/bbstudy_files/
[xifj@Xi ~]$ curl -T test.sql ftp://username:password@ip:port/demo/curtain/bbstudy_files/
15、模拟浏览器头部
[xifj@Xi ~]$ curl -A "Mozilla/4.0 (兼容; MSIE 6.0; Windows NT 5.0)" -x 12< @3.45.67.89:1080 -o page.html -D cookie0001.txt
16,PUT,GET,POST
比如curl -T localfile~zz/abc.cgi,此时使用的协议是HTTP PUT方式
刚才说到PUT,我自然会想到其他几种方法——GET和POST。
curl 抓取网页(和wget下载安装下载安装1、Ubuntu平台wget命令安装)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2022-02-12 11:17
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curlDownload
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl-obaidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -Obaidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应,也可以通过一段时间内下载获得的字节数间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、 代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装下载安装1、Ubuntu平台wget命令安装)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curlDownload
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl-obaidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -Obaidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应,也可以通过一段时间内下载获得的字节数间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、 代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(块传输编码(ChunkedTransfer)改变消息主体与实体主体的区别 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2022-02-11 12:19
)
分块传输编码
分块编码更改消息正文,以便消息正文以块的形式发送。每个块都有自己的大小指示符,紧跟在所有块之后的收录实体头字段的可选尾部。这允许发送者动态生成内容并携带有用的信息,接收者可以使用这些信息来确定是否收到了消息。
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 查看全部
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
curl 抓取网页(php中常用都实现更复杂的传输功能(post传输方式) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 42 次浏览 • 2022-02-01 10:03
)
CURL 是一个文件传输工具,它使用 URL 语法在命令行模式下工作。它支持许多协议。支持认证功能。比较复杂的传输函数一般用php实现。
实现的功能:
1、远程访问和采集内容
2、实现PHP网页版FTP上传下载
3、实现模拟登录:去一个邮件系统,curl可以模拟cookies
4、 实现接口对接(API)、数据传输等:通过平台发送短信,捕获并传输传输的信息。
5、实现模拟cookies等:有些属性只能在登录状态下操作。
如何使用CURL函数:
PHP默认不支持CURL,需要在php.ini中开启该功能
;extension=php_curl.dll 去掉分号
1整个操作的第一步是使用cur_init()函数进行初始化
$curl = curl_init(‘www.gaodaima.com')
3.设置完成后,执行事务 curl_exec($curl);2.使用 curl_setopt() 函数设置选项。
4 最后关闭 curl_close();
使用PHP CURL实现传输和获取功能(后传方式):获取远程网页数据
$user = "admin";$pass = "admin";$curlPost= "user=$user&pass=$pass";$ch = curl_init(); //初始化一个CURL对象curl_setopt($ch, CURLOPT_URL,"http://localhost/edu/login.php");//设置你所需要抓取的URLcurl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中假设上面的0换成1的话,那么接下来的$data就需要echo一下。curl_setopt($ch, CURLOPT_POST, 1);//post提交curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);//运行curl,请求网页。curl_close($ch);[/code]
实现远程模拟登录最基本的部分。
curl还需要配置用户名和密码,但是被浏览器隐藏了。
================================================ === =================================\
curl 模拟登录
模拟登录:即使不登录php100论坛,也可以查看相应信息。
分析登录字段->登录后保留cookie->读取cookie并跳转到相关页面->抓取次数
1、模拟登录后创建文件保存cookie内容
2、通过读取生成的cookie内容模拟用户登录状态
3、去相关页面获取你需要的东西
tempname 创建一个临时文件
tempnam() 函数创建一个具有唯一文件名的临时文件。如果成功,该函数返回新的临时文件名。失败时返回 false。
tempnam(目录,前缀)
参数说明
dir 必需。指定创建临时文件的目录。
前缀是必需的。指定文件名的开头。
相当于,fopen fwirte fclose
它可以返回一个布尔值。使用第三方登录你的QQ和msn是非常危险的,因为它可以记录你的登录状态,并窃取你的用户名和密码。
使用CURL模拟登录PHP100论坛
1、分析输入框字段名和登录所需字段个数
2、保存cookie模拟登录,获取会员金币数量
代码:
//初始化一个 cURL 对象$curl = curl_init();//设置你需要抓取的URLcurl_setopt($curl, CURLOPT_URL," http://www.baidu.com ");//设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//运行cURL,请求网页$data = curl_exec($curl);//关闭URL请求curl_close($curl);$user = "admin";$pass = "admin100";$curlPost= "user=$user&pass=$pa本文来源gaodai#ma#com搞*!代#%^码$网!搞代gaodaima码ss";$ch = curl_init();curl_setopt($ch, CURLOPT_URL," http://localhost/curl/login.php ");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);curl_close($ch);?>if($_POST['user']=="admin"){ echo"";}else{ echo"";}//print_r($_POST);?> 查看全部
curl 抓取网页(php中常用都实现更复杂的传输功能(post传输方式)
)
CURL 是一个文件传输工具,它使用 URL 语法在命令行模式下工作。它支持许多协议。支持认证功能。比较复杂的传输函数一般用php实现。
实现的功能:
1、远程访问和采集内容
2、实现PHP网页版FTP上传下载
3、实现模拟登录:去一个邮件系统,curl可以模拟cookies
4、 实现接口对接(API)、数据传输等:通过平台发送短信,捕获并传输传输的信息。
5、实现模拟cookies等:有些属性只能在登录状态下操作。
如何使用CURL函数:
PHP默认不支持CURL,需要在php.ini中开启该功能
;extension=php_curl.dll 去掉分号
1整个操作的第一步是使用cur_init()函数进行初始化
$curl = curl_init(‘www.gaodaima.com')
3.设置完成后,执行事务 curl_exec($curl);2.使用 curl_setopt() 函数设置选项。
4 最后关闭 curl_close();
使用PHP CURL实现传输和获取功能(后传方式):获取远程网页数据
$user = "admin";$pass = "admin";$curlPost= "user=$user&pass=$pass";$ch = curl_init(); //初始化一个CURL对象curl_setopt($ch, CURLOPT_URL,"http://localhost/edu/login.php");//设置你所需要抓取的URLcurl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中假设上面的0换成1的话,那么接下来的$data就需要echo一下。curl_setopt($ch, CURLOPT_POST, 1);//post提交curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);//运行curl,请求网页。curl_close($ch);[/code]
实现远程模拟登录最基本的部分。
curl还需要配置用户名和密码,但是被浏览器隐藏了。
================================================ === =================================\
curl 模拟登录
模拟登录:即使不登录php100论坛,也可以查看相应信息。
分析登录字段->登录后保留cookie->读取cookie并跳转到相关页面->抓取次数
1、模拟登录后创建文件保存cookie内容
2、通过读取生成的cookie内容模拟用户登录状态
3、去相关页面获取你需要的东西
tempname 创建一个临时文件
tempnam() 函数创建一个具有唯一文件名的临时文件。如果成功,该函数返回新的临时文件名。失败时返回 false。
tempnam(目录,前缀)
参数说明
dir 必需。指定创建临时文件的目录。
前缀是必需的。指定文件名的开头。
相当于,fopen fwirte fclose
它可以返回一个布尔值。使用第三方登录你的QQ和msn是非常危险的,因为它可以记录你的登录状态,并窃取你的用户名和密码。
使用CURL模拟登录PHP100论坛
1、分析输入框字段名和登录所需字段个数
2、保存cookie模拟登录,获取会员金币数量
代码:
//初始化一个 cURL 对象$curl = curl_init();//设置你需要抓取的URLcurl_setopt($curl, CURLOPT_URL," http://www.baidu.com ");//设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//运行cURL,请求网页$data = curl_exec($curl);//关闭URL请求curl_close($curl);$user = "admin";$pass = "admin100";$curlPost= "user=$user&pass=$pa本文来源gaodai#ma#com搞*!代#%^码$网!搞代gaodaima码ss";$ch = curl_init();curl_setopt($ch, CURLOPT_URL," http://localhost/curl/login.php ");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);$data = curl_exec($ch);curl_close($ch);?>if($_POST['user']=="admin"){ echo"";}else{ echo"";}//print_r($_POST);?>
curl 抓取网页( PHP扩展完成一个请求的抓取网页内容请求步骤介绍 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 44 次浏览 • 2022-01-31 11:07
PHP扩展完成一个请求的抓取网页内容请求步骤介绍
)
curl - 抓取网络数据
时间:2019-08-09
本文章为大家介绍curl-爬取网页数据,主要包括curl-爬取网页数据使用实例、应用技巧、基础知识点总结及注意事项,具有一定的参考价值,需要的朋友们可以参考一下。
使用 CURL 的 PHP 扩展发送 HTTP 请求一般有以下步骤:
1、初始化连接句柄;
2、配置参数;
3、执行并得到结果;
4、释放 CURL 连接句柄。
下面是curl模拟一个get请求,抓取网页内容:
$url="http://book.zongheng.com/chapt ... 3B%3B <br /><br />
//1.初始化curl
$ch=curl_init($url);//第一步,我们通过函数curl_init()创建一个新的curl会话
//2.设置传输选项(向服务器端发送请求)
//curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//3.执行curl请求(接收服务器端发送的数据)
$output=curl_exec($ch);
//4.关闭curl
curl_close($ch);
//匹配标题 第一章 惊蛰
preg_match_all("/(.*?)/", $output, $title);
//匹配p标签段落内容 <p>二月二,龙抬头。
preg_match_all("/
(.*?)/", $output, $match);
//. 是任意字符 可以匹配任何单个字符,
//.*? 表示匹配任意字符到下一个符合条件的字符
$a=$match[0];
echo implode( ' ',$a); <br /><br /> 查看全部
curl 抓取网页(
PHP扩展完成一个请求的抓取网页内容请求步骤介绍
)
curl - 抓取网络数据
时间:2019-08-09
本文章为大家介绍curl-爬取网页数据,主要包括curl-爬取网页数据使用实例、应用技巧、基础知识点总结及注意事项,具有一定的参考价值,需要的朋友们可以参考一下。
使用 CURL 的 PHP 扩展发送 HTTP 请求一般有以下步骤:
1、初始化连接句柄;
2、配置参数;
3、执行并得到结果;
4、释放 CURL 连接句柄。
下面是curl模拟一个get请求,抓取网页内容:
$url="http://book.zongheng.com/chapt ... 3B%3B <br /><br />
//1.初始化curl
$ch=curl_init($url);//第一步,我们通过函数curl_init()创建一个新的curl会话
//2.设置传输选项(向服务器端发送请求)
//curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//3.执行curl请求(接收服务器端发送的数据)
$output=curl_exec($ch);
//4.关闭curl
curl_close($ch);
//匹配标题 第一章 惊蛰
preg_match_all("/(.*?)/", $output, $title);
//匹配p标签段落内容 <p>二月二,龙抬头。
preg_match_all("/
(.*?)/", $output, $match);
//. 是任意字符 可以匹配任何单个字符,
//.*? 表示匹配任意字符到下一个符合条件的字符
$a=$match[0];
echo implode( ' ',$a); <br /><br />
curl 抓取网页(curl和wget抓取实例抓取网页(1)_html文件)
网站优化 • 优采云 发表了文章 • 0 个评论 • 51 次浏览 • 2022-01-31 10:13
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL和proxy代理
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据包丢失/服务器宕机等原因,网页暂时无法成功下载。这时候,你可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认80)
注意:-x代表代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21 8.107.21.252:8080下载百度首页,最后218.107.21.252:8080通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(curl和wget抓取实例抓取网页(1)_html文件)
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL和proxy代理
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网速/数据包丢失/服务器宕机等原因,网页暂时无法成功下载。这时候,你可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认80)
注意:-x代表代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21 8.107.21.252:8080下载百度首页,最后218.107.21.252:8080通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2022-01-30 20:09
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账户登录,不需要输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl -o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:sudoapt)
网站优化 • 优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2022-01-28 08:01
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账号登录,不需要密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后,格式为wget-1.11.4-1-setup.exe,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl /-o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认80)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget是通过代理下载的,和curl不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd~)下新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:sudoapt)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需要输入密码;root账号登录,不需要密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接为curl.exe格式,复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后,格式为wget-1.11.4-1-setup.exe,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl /-o baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget -O baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是直接连接网站服务器下载的url
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认80)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget是通过代理下载的,和curl不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd~)下新建wget配置文件(.wgetrc),进入代理配置:
curl 抓取网页(运用PHP的cURL库可以基本和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-01-27 15:25
使用 PHP 的 cURL 库可以基本有效的抓取网页。你只需要运行一个脚本,然后分析你爬取的网页,然后你就可以通过编程方式获取你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,甚至是基本的 Web 内容获取,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个 PHP 库。
启用 cURL 配置
首先,我们要确保我们的 PHP 可以启用这个库,你可以使用 php_info() 函数来获取这些信息。
如果可以在网页上看到上面的输入,则说明 cURL 库已启用。
如果你看到它,那么你需要配置你的 PHP 并启用这个库。如果你是在windows平台,那是很基础的,你需要改变你的php.ini文件的配置,找到php_curl.dll,去掉分号注释。如下:
//撤消下一条评论
扩展=php_curl.dll
如果你在 Linux 上,那么你需要重新编译你的 PHP。编辑时需要打开编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,以上就是一个小例程:
如何发布数据
上面是爬取网页的代码,上面是POST数据到网页。假设我们有一个处理表单的 URL,该表单接受两个表单字段,一个用于电话号码,一个用于文本消息的文本。 查看全部
curl 抓取网页(运用PHP的cURL库可以基本和有效地去抓网页。)
使用 PHP 的 cURL 库可以基本有效的抓取网页。你只需要运行一个脚本,然后分析你爬取的网页,然后你就可以通过编程方式获取你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,甚至是基本的 Web 内容获取,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个 PHP 库。
启用 cURL 配置
首先,我们要确保我们的 PHP 可以启用这个库,你可以使用 php_info() 函数来获取这些信息。
如果可以在网页上看到上面的输入,则说明 cURL 库已启用。
如果你看到它,那么你需要配置你的 PHP 并启用这个库。如果你是在windows平台,那是很基础的,你需要改变你的php.ini文件的配置,找到php_curl.dll,去掉分号注释。如下:
//撤消下一条评论
扩展=php_curl.dll
如果你在 Linux 上,那么你需要重新编译你的 PHP。编辑时需要打开编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,以上就是一个小例程:
如何发布数据
上面是爬取网页的代码,上面是POST数据到网页。假设我们有一个处理表单的 URL,该表单接受两个表单字段,一个用于电话号码,一个用于文本消息的文本。
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2022-01-23 06:13
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需输入密码;root账户登录,无需输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接以curl.exe的格式复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: 查看全部
curl 抓取网页(和wget下载安装1、Ubuntu平台wget命令安装:百度首页为例)
curl和wget下载安装
1、Ubuntu 平台
wget命令安装:sudo apt-get install wget(普通用户登录,需输入密码;root账户登录,无需输入密码)
curl命令安装:sudo apt-get install curl(同wget)
2、Windows 平台
wget下载地址:wget for Windows
curl下载地址:curl下载
wget和curl包下载地址:Windows平台下的wget和curl工具包
在Windows平台下,curl下载解压后直接以curl.exe的格式复制到系统命令目录下的C:\Windows\System32。
Windows平台下,wget下载解压后为wget-1.11.4-1-setup.exe格式,需要安装;安装完成后,在环境变量-系统变量-路径目录下添加其安装
curl 和 wget 抓取实例
抓取网页主要有两种方式:url URL 和代理代理。下面是一个爬取“百度”首页的例子。
1、 url URL方法爬取
(1)curl下载百度首页内容,保存在baidu_html文件中
curl baidu_html
(2)wget下载百度首页内容,保存在baidu_html文件中
wget baidu_html2
有时,由于网络速度/数据包丢失/服务器停机等原因,网页暂时无法成功下载。
这时候可能需要尝试多次发送连接来请求服务器的响应;如果多次仍然没有响应,则可以确认服务器有问题。
(1)curl 尝试连接多次
curl --retry 10 --retry-delay 60 --retry-max-time 60 -o baidu_html
注意:--retry 表示重试次数;--retry-delay 表示两次重试之间的时间间隔(以秒为单位);--retry-max-time 表示在这个最大时间内只允许重试一次(一般同--retry-delay)
(2)wget 尝试连接多次
wget -t 10 -w 60 -T 30 -O baidu_html2
注意:-t(--tries)表示重试次数;-w 表示两次重试之间的时间间隔(以秒为单位);-T 表示连接超时时间,超过超时则连接不成功,下次连接继续尝试
附:curl可以判断服务器是否响应。也可以通过一段时间内下载获得的字节数来间接判断。命令格式如下:
curl -y 60 -Y 1 -m 60 -o baidu_html
注:-y表示测试网速的时间;-Y 表示-y期间下载的字节数(字节为单位);-m 表示允许请求连接的最长时间,如果超过连接会自动断开连接并放弃连接
2、代理代理捕获
代理下载是通过连接中间服务器间接下载url网页的过程,而不是url直接连接网站服务器下载
两位知名的自由球员网站:
(全球数十个国家免费代理,每日更新)
(通过设置端口类型、代理类型、国家名称过滤)
在网站中选择国内免费的代理服务器为例介绍代理代理爬取网页:
218.107.21.252:8080(ip为218.107.21.252;端口为8080,中间是 8080 冒号“:”隔开形成套接字)
(1)curl通过代理爬取百度首页
curl -x 218.107.21.252:8080 -o aaaaa(常用端口有80、8080、8086、8888、3128等,默认8< @0)
注意:-x表示代理服务器(ip:port),即curl先连接代理服务器218.107.21.252:8080,然后通过21< @k31@ >107.21.252:8080 下载百度首页,最后218.107.21.252:8080 通过下载百度主页 curl 到本地(curl 不是直接连接百度服务器下载主页,而是通过中介代理)
(2)wget通过代理爬取百度首页
wget 通过代理下载,和 curl 不一样。需要先设置代理服务器的http_proxy=ip:port。
以ubuntu为例,在当前用户目录(cd ~),新建wget配置文件(.wgetrc),进入代理配置: