
php curl抓取网页指定内容
php curl抓取网页指定内容(一下基于DOM结构的爬虫框架怎么使用?(上))
网站优化 • 优采云 发表了文章 • 0 个评论 • 48 次浏览 • 2022-03-30 09:04
出品 | CSDN(ID:CSDNnews)
爬虫应用很广泛,比如搜索引擎、采集数据、广告过滤、数据分析等。我们爬几个网站内容还是可以写多个爬虫,但是不可能为需要爬取多个 网站 内容的项目编写多个爬虫。这就是我们需要智能爬虫的时候。
目前智能爬虫分为三种:
1. 基于网页内容的爬虫
当一个网页收录大量需要提取的信息时,我们需要使用基于网页内容的爬虫。爬虫将 HTML 视为文本并使用 NLP 技术对其进行处理。
这种基于网页内容的爬虫虽然可以减少爬虫的数量,但需要人工参与NLP模型的训练。没有AI开发经验或者AI开发经验很少的程序员很难写出这样的爬虫,爬虫的时间都花在了爬取上。很长而且效率很低。
2. 基于DOM结构的爬虫
基于DOM结构的爬虫比较简单,就是将HTML解析成DOM树,然后根据语法结构提取信息。这种方法比以前的方法更有效、更准确。
3. 基于视觉的爬虫
基于视觉的爬虫开发难度也很大。它通过浏览器接口或浏览器内核烧录目标页面,然后根据网页的视觉规律提取网页数据。这种爬虫需要利用神经网络中的CNN卷积神经网络来获取页面特定区域的内容。
最常用的爬虫框架是 Readability 和 Newspaper。下面我们来看看这两个框架的解释。
报纸
Newspaper 是一个使用 NLP 的智能爬虫框架,可以从页面中提取大量内容。要安装这个爬虫框架,需要先安装依赖:
shell
sudo apt-get install libxml2-dev libxslt-dev
sudo apt-get install libjpeg-dev zlib1g-dev libpng12-dev
以上安装中,如果libpng12-dev出现错误,需要安装libpng-dev。
接下来,您需要安装 NLP 语料库:
shell
curl https://raw.githubusercontent. ... ra.py | python3
最后我们安装报纸爬虫框架:
shell
pip install newspaper3k
我们举个例子看看Newspaper框架是怎么使用的:
python
from newspaper import Article
url = 'https://www.ithome.com/0/445/071.htm'
article = Article(url, language='zh')
article.download
article.parse
print('作者', article.authors)
print('标题', article.title)
print('发布日期', article.publish_date)
print('正文', article.text)
article.nlp
print('关键词', article.keywords)
print('摘要', article.summary)
上面代码中的 language='zh' 告诉 Newspaper 我们正在爬取中文网页。报纸会先下载页面,然后使用parse方法解析页面。页面解析后,可以得到作者、标题、发布日期等信息。如果要提取关键词和摘要,可以使用 nlp 方法。
我用多个不同的网站网址测试,发现有些内容的作者和发布日期无法解析,甚至有些内容获取错误,但英文内容的识别率还是很高的。如果想提高中文的识别率,可以更换报纸上使用的分词数据库(报纸目前使用的分词数据库是口吃分词),或者改变使用的内容识别模型。
可读性
可读性是一种爬虫算法。它在 python 中的名称是 readability-lxml。我们也可以通过 pip 命令安装它:
shell
pip install readability-lxml
安装完成后,我们只需要导入可读性,我们看一下例子:
python
import requests
from readability import Document
url = "https://www.ithome.com/0/444/503.htm"
html = requests.get(url).content
doc = Document(html)
print("title:", doc.title)
print("content:", doc.summary(html_partial=True))
这里我们使用requests库请求页面,然后将获取到的html内容传递给可读性的Document类,然后调用title和summary方法获取title和body。这样我们就得到了标题和正文。
summary 方法中的 html_partial 表示是否过滤掉返回结果中的 html 和 body 标签。可读性返回的正文内容很可能收录页面html元素,这需要我们进行二次过滤或提取。
可读性获取标题的方法很简单,就是直接获取页面title元素中的内容,但是获取文本的方法比较麻烦。它对每个节点进行评分。比如遇到文章元素,会加5分(源码是加5分),因为文章元素可能是正文内容,也可能是正文内容的一部分。
如果遇到 ol 元素,说明可能不是body内容,所以减去3分后,得分最高的元素很可能是body或者body内容。
当然,可读性也有使用正则表达式打分的方法,这种方法的效果和前面的方法差不多。简单来说,可读性原则是基于经验积累的模型集,分数也是基于钦佩性不断优化的结果。所以这个框架的准确率不是很高,但是可以解放一些人。
总结与风险防范
我们讲解了三种常见的智能爬虫,也以代码的形式学习了报刊和可读性的使用和原理。我们可以利用在这个文章中学到的东西来编写自己的爬虫,同时也可以理解爬虫。发展有更好的理解。
爬行动物目前处于合法的灰色地带。如果使用得当,它们将为个人/公司带来巨大的利益。否则会给个人/公司带来法律风险。所以我们在使用爬虫的时候,一定要遵守目标网站robots.txt文件中的规定,同时控制目标网站的爬取速度和频率,防止目标网站 @k17@ > 造成压力,甚至破坏数据信息。
作者简介:朱刚,笔名妙书,CSDN博客专家,.NET高级开发工程师,7年一线开发经验,参与电子政务系统和AI客服系统开发,互联网架构设计招聘网站,目前在职,从事企业级安全监控系统的开发。
【结尾】 查看全部
php curl抓取网页指定内容(一下基于DOM结构的爬虫框架怎么使用?(上))
出品 | CSDN(ID:CSDNnews)
爬虫应用很广泛,比如搜索引擎、采集数据、广告过滤、数据分析等。我们爬几个网站内容还是可以写多个爬虫,但是不可能为需要爬取多个 网站 内容的项目编写多个爬虫。这就是我们需要智能爬虫的时候。
目前智能爬虫分为三种:
1. 基于网页内容的爬虫
当一个网页收录大量需要提取的信息时,我们需要使用基于网页内容的爬虫。爬虫将 HTML 视为文本并使用 NLP 技术对其进行处理。
这种基于网页内容的爬虫虽然可以减少爬虫的数量,但需要人工参与NLP模型的训练。没有AI开发经验或者AI开发经验很少的程序员很难写出这样的爬虫,爬虫的时间都花在了爬取上。很长而且效率很低。
2. 基于DOM结构的爬虫
基于DOM结构的爬虫比较简单,就是将HTML解析成DOM树,然后根据语法结构提取信息。这种方法比以前的方法更有效、更准确。
3. 基于视觉的爬虫
基于视觉的爬虫开发难度也很大。它通过浏览器接口或浏览器内核烧录目标页面,然后根据网页的视觉规律提取网页数据。这种爬虫需要利用神经网络中的CNN卷积神经网络来获取页面特定区域的内容。
最常用的爬虫框架是 Readability 和 Newspaper。下面我们来看看这两个框架的解释。
报纸
Newspaper 是一个使用 NLP 的智能爬虫框架,可以从页面中提取大量内容。要安装这个爬虫框架,需要先安装依赖:
shell
sudo apt-get install libxml2-dev libxslt-dev
sudo apt-get install libjpeg-dev zlib1g-dev libpng12-dev
以上安装中,如果libpng12-dev出现错误,需要安装libpng-dev。
接下来,您需要安装 NLP 语料库:
shell
curl https://raw.githubusercontent. ... ra.py | python3
最后我们安装报纸爬虫框架:
shell
pip install newspaper3k
我们举个例子看看Newspaper框架是怎么使用的:
python
from newspaper import Article
url = 'https://www.ithome.com/0/445/071.htm'
article = Article(url, language='zh')
article.download
article.parse
print('作者', article.authors)
print('标题', article.title)
print('发布日期', article.publish_date)
print('正文', article.text)
article.nlp
print('关键词', article.keywords)
print('摘要', article.summary)
上面代码中的 language='zh' 告诉 Newspaper 我们正在爬取中文网页。报纸会先下载页面,然后使用parse方法解析页面。页面解析后,可以得到作者、标题、发布日期等信息。如果要提取关键词和摘要,可以使用 nlp 方法。
我用多个不同的网站网址测试,发现有些内容的作者和发布日期无法解析,甚至有些内容获取错误,但英文内容的识别率还是很高的。如果想提高中文的识别率,可以更换报纸上使用的分词数据库(报纸目前使用的分词数据库是口吃分词),或者改变使用的内容识别模型。
可读性
可读性是一种爬虫算法。它在 python 中的名称是 readability-lxml。我们也可以通过 pip 命令安装它:
shell
pip install readability-lxml
安装完成后,我们只需要导入可读性,我们看一下例子:
python
import requests
from readability import Document
url = "https://www.ithome.com/0/444/503.htm"
html = requests.get(url).content
doc = Document(html)
print("title:", doc.title)
print("content:", doc.summary(html_partial=True))
这里我们使用requests库请求页面,然后将获取到的html内容传递给可读性的Document类,然后调用title和summary方法获取title和body。这样我们就得到了标题和正文。
summary 方法中的 html_partial 表示是否过滤掉返回结果中的 html 和 body 标签。可读性返回的正文内容很可能收录页面html元素,这需要我们进行二次过滤或提取。
可读性获取标题的方法很简单,就是直接获取页面title元素中的内容,但是获取文本的方法比较麻烦。它对每个节点进行评分。比如遇到文章元素,会加5分(源码是加5分),因为文章元素可能是正文内容,也可能是正文内容的一部分。
如果遇到 ol 元素,说明可能不是body内容,所以减去3分后,得分最高的元素很可能是body或者body内容。
当然,可读性也有使用正则表达式打分的方法,这种方法的效果和前面的方法差不多。简单来说,可读性原则是基于经验积累的模型集,分数也是基于钦佩性不断优化的结果。所以这个框架的准确率不是很高,但是可以解放一些人。
总结与风险防范
我们讲解了三种常见的智能爬虫,也以代码的形式学习了报刊和可读性的使用和原理。我们可以利用在这个文章中学到的东西来编写自己的爬虫,同时也可以理解爬虫。发展有更好的理解。
爬行动物目前处于合法的灰色地带。如果使用得当,它们将为个人/公司带来巨大的利益。否则会给个人/公司带来法律风险。所以我们在使用爬虫的时候,一定要遵守目标网站robots.txt文件中的规定,同时控制目标网站的爬取速度和频率,防止目标网站 @k17@ > 造成压力,甚至破坏数据信息。
作者简介:朱刚,笔名妙书,CSDN博客专家,.NET高级开发工程师,7年一线开发经验,参与电子政务系统和AI客服系统开发,互联网架构设计招聘网站,目前在职,从事企业级安全监控系统的开发。
【结尾】
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
网站优化 • 优采云 发表了文章 • 0 个评论 • 111 次浏览 • 2022-03-24 00:08
1、fopen 的使用
复制代码代码如下:
复制代码代码如下:
// 以下代码可用于 PHP 5 及以上版本
但是上面的代码很容易出现开流失败:HTTP request failed!错误,解决方法
有人说在php.ini中有两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示使用哪个脚本访问网络,还有一个" ;" 默认在它前面。是的。)重新启动服务器。
但他们中的一些人仍然有这个警告信息。距离完美解决方案还有一步之遥。您必须在 php.ini 中设置 user_agent。php的默认user_agent是PHP,我们改成Mozilla/4.0(兼容Mozilla/4.0)。; MSIE 6.0; Windows NT 5.0) 模拟浏览器
user_agent="Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)"
工作中遇到这个问题,完美解决了,分享给大家。
2、由 curl 实现
复制代码代码如下:
linux下,可以使用以下代码下载
exec("wget {$url}");
PHP抓取外部资源函数fopen/file_get_contents/curl的区别
fopen/file_get_contents 会为每个请求重新做 DNS 查询,并且不缓存 DNS 信息。
但是 CURL 会自动缓存 DNS 信息。对同一域名下的网页或图片的请求只需要一次 DNS 查询。
这大大减少了 DNS 查询的数量。
所以 CURL 的性能比 fopen/file_get_contents 好很多。 查看全部
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
1、fopen 的使用
复制代码代码如下:
复制代码代码如下:
// 以下代码可用于 PHP 5 及以上版本
但是上面的代码很容易出现开流失败:HTTP request failed!错误,解决方法
有人说在php.ini中有两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示使用哪个脚本访问网络,还有一个" ;" 默认在它前面。是的。)重新启动服务器。
但他们中的一些人仍然有这个警告信息。距离完美解决方案还有一步之遥。您必须在 php.ini 中设置 user_agent。php的默认user_agent是PHP,我们改成Mozilla/4.0(兼容Mozilla/4.0)。; MSIE 6.0; Windows NT 5.0) 模拟浏览器

user_agent="Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)"
工作中遇到这个问题,完美解决了,分享给大家。
2、由 curl 实现
复制代码代码如下:
linux下,可以使用以下代码下载
exec("wget {$url}");
PHP抓取外部资源函数fopen/file_get_contents/curl的区别
fopen/file_get_contents 会为每个请求重新做 DNS 查询,并且不缓存 DNS 信息。
但是 CURL 会自动缓存 DNS 信息。对同一域名下的网页或图片的请求只需要一次 DNS 查询。
这大大减少了 DNS 查询的数量。
所以 CURL 的性能比 fopen/file_get_contents 好很多。
php curl抓取网页指定内容(phpcurl抓取网页指定内容-学习视频教程-轻量级网络爬虫学习路线)
网站优化 • 优采云 发表了文章 • 0 个评论 • 44 次浏览 • 2022-03-22 12:58
phpcurl抓取网页指定内容-学习视频教程学习视频教程-轻量级网络爬虫学习路线-牛客网信息采集之网页json数据分析:html5数据之json获取
谈到抓取,很多人第一时间想到的就是requests等python中提供的接口方法。但我觉得,更加常用的就是利用webcookie。简单的说,就是浏览器会保存浏览器信息(用http协议保存)。webcookie其实很简单,可以用作浏览器的缓存。而且由于cookie只是一段dom树,也不存在扩展问题,对于大部分开发人员来说,这就是一段抓取历史。
从而用来实现网页抓取。基本原理,post(),get()方法,通过类似cookie的方式,将浏览器的历史信息保存下来,然后调用浏览器解析html文档的接口(由浏览器调用)或者有很多开源接口,如:threadlocal,webqueryset,websession等。总之post(),get(),document.documentelement.getelementsbytagname("script")[0].document()这三个方法,以及浏览器的设置,都可以获取浏览器历史数据。具体的方法如下:。
1、保存cookie,首先保存到https文件中:-html-cookie-targets/然后每次执行爬虫时,都调用浏览器的savecallback方法,对cookie数据进行保存。
2、获取cookie,但很多我们需要的历史数据太多,比如一个或多个page的链接的不同页面的header记录。如何获取呢?很多人一般都是通过post方法来获取。但是,很多时候我们只是需要第1页或第2页,至于其他页的数据,我们就没必要保存下来了。如果只有这样的数据,还好办。用http请求方法,我们只需要正常对着cookie的返回值读数据即可。如果需要获取后续所有数据,我们可以继续http请求。
3、对请求进行get和post方法,我们分别获取对应数据即可。基本思路如上所示。因为python协议所限,大部分功能都必须获取每一个单独的文件。而我们一般对网页的抓取,通常只抓取一个网页,比如获取page的第一页,及最后一页的最后一页中的第一页的所有页面数据。
那么,对于page指定的一个页面,
1、获取page指定的网页的全部数据页
2、只获取其中page中包含的最后一页(如果指定第一页中包含最后一页的话,
3、在所有页面中获取page页的最后一页内容第一种方法,我们在网页每个页面点击访问,查看抓取到的html内容即可获取前面页面页面的全部内容。缺点是获取数据比较慢,而且效率较低;最好带一个浏览器插件,将cookie里数据一次性导出为cookie.需要再次手动做些改动,比如修改爬取的cookie,保存cookie.第二种方法。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容-学习视频教程-轻量级网络爬虫学习路线)
phpcurl抓取网页指定内容-学习视频教程学习视频教程-轻量级网络爬虫学习路线-牛客网信息采集之网页json数据分析:html5数据之json获取
谈到抓取,很多人第一时间想到的就是requests等python中提供的接口方法。但我觉得,更加常用的就是利用webcookie。简单的说,就是浏览器会保存浏览器信息(用http协议保存)。webcookie其实很简单,可以用作浏览器的缓存。而且由于cookie只是一段dom树,也不存在扩展问题,对于大部分开发人员来说,这就是一段抓取历史。
从而用来实现网页抓取。基本原理,post(),get()方法,通过类似cookie的方式,将浏览器的历史信息保存下来,然后调用浏览器解析html文档的接口(由浏览器调用)或者有很多开源接口,如:threadlocal,webqueryset,websession等。总之post(),get(),document.documentelement.getelementsbytagname("script")[0].document()这三个方法,以及浏览器的设置,都可以获取浏览器历史数据。具体的方法如下:。
1、保存cookie,首先保存到https文件中:-html-cookie-targets/然后每次执行爬虫时,都调用浏览器的savecallback方法,对cookie数据进行保存。
2、获取cookie,但很多我们需要的历史数据太多,比如一个或多个page的链接的不同页面的header记录。如何获取呢?很多人一般都是通过post方法来获取。但是,很多时候我们只是需要第1页或第2页,至于其他页的数据,我们就没必要保存下来了。如果只有这样的数据,还好办。用http请求方法,我们只需要正常对着cookie的返回值读数据即可。如果需要获取后续所有数据,我们可以继续http请求。
3、对请求进行get和post方法,我们分别获取对应数据即可。基本思路如上所示。因为python协议所限,大部分功能都必须获取每一个单独的文件。而我们一般对网页的抓取,通常只抓取一个网页,比如获取page的第一页,及最后一页的最后一页中的第一页的所有页面数据。
那么,对于page指定的一个页面,
1、获取page指定的网页的全部数据页
2、只获取其中page中包含的最后一页(如果指定第一页中包含最后一页的话,
3、在所有页面中获取page页的最后一页内容第一种方法,我们在网页每个页面点击访问,查看抓取到的html内容即可获取前面页面页面的全部内容。缺点是获取数据比较慢,而且效率较低;最好带一个浏览器插件,将cookie里数据一次性导出为cookie.需要再次手动做些改动,比如修改爬取的cookie,保存cookie.第二种方法。
php curl抓取网页指定内容( PHP的curl()使用总结及使用的使用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 149 次浏览 • 2022-03-13 18:17
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库,可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例,与大家分享cURL的使用。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址
$url = "http://m.oschina.net/action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//登录后要获取信息的地址
$url2 = "http://m.oschina.net/my";
//模拟登录
login_post($url, $cookie, $post);
//获取登录页的信息
$content = get_content($url2, $cookie);
//删除cookie文件
@ unlink($cookie);
//匹配页面信息
$preg = "/(.*)/i";
preg_match_all($preg, $content, $arr);
$str = $arr[1][0];
//输出内容
echo $str;
运行上面的代码后,我们会看到最终得到了登录用户的头像。
使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
参考
《php中curl和curl的介绍》,作者不详,
Veda 的“使用 PHP CURL 发布数据”,
《php使用curl模拟登录discuz并模拟发帖》,作者:天心,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: 查看全部
php curl抓取网页指定内容(
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库,可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例,与大家分享cURL的使用。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址
$url = "http://m.oschina.net/action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//登录后要获取信息的地址
$url2 = "http://m.oschina.net/my";
//模拟登录
login_post($url, $cookie, $post);
//获取登录页的信息
$content = get_content($url2, $cookie);
//删除cookie文件
@ unlink($cookie);
//匹配页面信息
$preg = "/(.*)/i";
preg_match_all($preg, $content, $arr);
$str = $arr[1][0];
//输出内容
echo $str;
运行上面的代码后,我们会看到最终得到了登录用户的头像。

使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
参考
《php中curl和curl的介绍》,作者不详,
Veda 的“使用 PHP CURL 发布数据”,
《php使用curl模拟登录discuz并模拟发帖》,作者:天心,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接:
php curl抓取网页指定内容( PHP的curl()使用总结及使用的使用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 49 次浏览 • 2022-03-10 14:14
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库,可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例,与大家分享cURL的使用。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址
$url = "http://m.oschina.net/action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//登录后要获取信息的地址
$url2 = "http://m.oschina.net/my";
//模拟登录
login_post($url, $cookie, $post);
//获取登录页的信息
$content = get_content($url2, $cookie);
//删除cookie文件
@ unlink($cookie);
//匹配页面信息
$preg = "/(.*)/i";
preg_match_all($preg, $content, $arr);
$str = $arr[1][0];
//输出内容
echo $str;
运行上面的代码后,我们会看到最终得到了登录用户的头像。
使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
参考
《php中curl和curl的介绍》,作者不详,
Veda 的“使用 PHP CURL 发布数据”,
《php使用curl模拟登录discuz并模拟发帖》,作者:天心,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: 查看全部
php curl抓取网页指定内容(
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库,可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例,与大家分享cURL的使用。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址
$url = "http://m.oschina.net/action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//登录后要获取信息的地址
$url2 = "http://m.oschina.net/my";
//模拟登录
login_post($url, $cookie, $post);
//获取登录页的信息
$content = get_content($url2, $cookie);
//删除cookie文件
@ unlink($cookie);
//匹配页面信息
$preg = "/(.*)/i";
preg_match_all($preg, $content, $arr);
$str = $arr[1][0];
//输出内容
echo $str;
运行上面的代码后,我们会看到最终得到了登录用户的头像。

使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
参考
《php中curl和curl的介绍》,作者不详,
Veda 的“使用 PHP CURL 发布数据”,
《php使用curl模拟登录discuz并模拟发帖》,作者:天心,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接:
php curl抓取网页指定内容(curldemo,learn|curl抓取网页指定内容的curl命令提示符)
网站优化 • 优采云 发表了文章 • 0 个评论 • 42 次浏览 • 2022-03-10 00:04
phpcurl抓取网页指定内容,为了不丢失原始网页内容,将每次抓取到的内容整理成文本传给服务器的redis,curl从redis服务端同步抓取到的结果,当redis服务端成功同步抓取到的结果后,本地curl命令提示符就可以用::|:分隔了。建议curl提供好接收redis文本的json序列化接口,可以降低后续安装与维护成本。
curldemo,learn|curl,learn!
这样的文档有的是。可以去看看。
通过phpcurl操作redis中数据格式
我说下我的看法吧。curl命令直接连接redis服务器,然后获取数据格式。通过json数据结构存储数据。但如果要传递大文件,建议用专门的工具/客户端。
mysql中的json格式的传输,包括xml、csv等等格式。
可以用phpcurl来连接redis,然后获取数据格式。
curl连接laravel服务器,对于curl命令行参数,楼上有人已经列举很全了,我补充下,php将json中的java=this()转化为php=this()。这里其实是用redis对象做中间层,对象=json对象,可以看我的专栏博客,深入剖析redis中的请求调用、权限操作、分布式部署、故障处理等。
curl命令可以把数据打包成一个json格式,
phpcurl可以连接到mysql,传递json格式到curl。 查看全部
php curl抓取网页指定内容(curldemo,learn|curl抓取网页指定内容的curl命令提示符)
phpcurl抓取网页指定内容,为了不丢失原始网页内容,将每次抓取到的内容整理成文本传给服务器的redis,curl从redis服务端同步抓取到的结果,当redis服务端成功同步抓取到的结果后,本地curl命令提示符就可以用::|:分隔了。建议curl提供好接收redis文本的json序列化接口,可以降低后续安装与维护成本。
curldemo,learn|curl,learn!
这样的文档有的是。可以去看看。
通过phpcurl操作redis中数据格式
我说下我的看法吧。curl命令直接连接redis服务器,然后获取数据格式。通过json数据结构存储数据。但如果要传递大文件,建议用专门的工具/客户端。
mysql中的json格式的传输,包括xml、csv等等格式。
可以用phpcurl来连接redis,然后获取数据格式。
curl连接laravel服务器,对于curl命令行参数,楼上有人已经列举很全了,我补充下,php将json中的java=this()转化为php=this()。这里其实是用redis对象做中间层,对象=json对象,可以看我的专栏博客,深入剖析redis中的请求调用、权限操作、分布式部署、故障处理等。
curl命令可以把数据打包成一个json格式,
phpcurl可以连接到mysql,传递json格式到curl。
php curl抓取网页指定内容(phpcurl抓取网页()()抓取(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2022-02-27 18:01
phpcurl抓取网页指定内容:baidu&hao123&sina&ucjavapostman:把你的网页以json格式格式发给他flash:flash网页中出现插件对象的元素,他会自动拿到转换tomcat+php-curl:这是flash网页直接分析tomcat的json格式的工具函数javapostman:把json格式转换为php类名,他会自动拿到转换至tomcat:找到java函数名,which写入到root目录下curl-u:8080-h:9000-m:44442-v:22-json:java-convert:php-bomauthenticate(encrypt加密):验证加密算法,ssl2。
(加密安全,php-auth是php-rsa加密,php-crypto是php-rsa-ev加密java-ffip):php-ffip代理,java-ffip代理。
javapostman、springframeworkflash都是postmessage传递参数,
一般使用.netcookie和dom,jsp毕竟是java的程序。
你不应该问javapostman,应该是问问java的controller传递参数有什么坑。
为什么问这个问题?postmessage传递参数的步骤:if("参数".equals(参数)){//这个参数不是变量!!!(如accept)#}else{//这个参数不是变量!!!(如type)#}#[注意!!!这个类型是eloquentglobalsharing,controller没办法获取更高的权限#注意!!!这个会编译错误,详见classcontroller{publicstaticvoidmain(string[]args){//controller代码块string[]args=(string)itemcontext.findparameters("item");//eloquentglobalsharement,根据item的type('text','plain','charset'),把这个字符串传参数到singleton中,然后postmessagetooutput函数写入数据库中。
string[]data=itemcontext.getcomponentnames("andorin");//sqlsessionsql[]sql=itemcontext.getcomponentnames("transaction");system.out.println("item:%s:%s:%s:%s:%s:%s",itemcontext.fromcontext(args[1]),args[0],args[1],args[2],args[0],args[1],args[2]);}}。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页()()抓取(图))
phpcurl抓取网页指定内容:baidu&hao123&sina&ucjavapostman:把你的网页以json格式格式发给他flash:flash网页中出现插件对象的元素,他会自动拿到转换tomcat+php-curl:这是flash网页直接分析tomcat的json格式的工具函数javapostman:把json格式转换为php类名,他会自动拿到转换至tomcat:找到java函数名,which写入到root目录下curl-u:8080-h:9000-m:44442-v:22-json:java-convert:php-bomauthenticate(encrypt加密):验证加密算法,ssl2。
(加密安全,php-auth是php-rsa加密,php-crypto是php-rsa-ev加密java-ffip):php-ffip代理,java-ffip代理。
javapostman、springframeworkflash都是postmessage传递参数,
一般使用.netcookie和dom,jsp毕竟是java的程序。
你不应该问javapostman,应该是问问java的controller传递参数有什么坑。
为什么问这个问题?postmessage传递参数的步骤:if("参数".equals(参数)){//这个参数不是变量!!!(如accept)#}else{//这个参数不是变量!!!(如type)#}#[注意!!!这个类型是eloquentglobalsharing,controller没办法获取更高的权限#注意!!!这个会编译错误,详见classcontroller{publicstaticvoidmain(string[]args){//controller代码块string[]args=(string)itemcontext.findparameters("item");//eloquentglobalsharement,根据item的type('text','plain','charset'),把这个字符串传参数到singleton中,然后postmessagetooutput函数写入数据库中。
string[]data=itemcontext.getcomponentnames("andorin");//sqlsessionsql[]sql=itemcontext.getcomponentnames("transaction");system.out.println("item:%s:%s:%s:%s:%s:%s",itemcontext.fromcontext(args[1]),args[0],args[1],args[2],args[0],args[1],args[2]);}}。
php curl抓取网页指定内容(我用php抓取数据的抓取方法抓的话的错误Youareauthorized)
网站优化 • 优采云 发表了文章 • 0 个评论 • 78 次浏览 • 2022-02-26 16:08
我用的是php,curl主要是抓取数据,当然我们也可以用其他的方法抓取,比如fsockopen,file_get_contents等等。但它只能抓取那些可以直接访问的页面。如果要抓取有页面访问控制的页面,或者登录后的页面,就比较难了。
1.无访问控制抓取文件
2.使用代理进行爬取
为什么要使用代理进行抓取?以谷歌为例。如果你抓取谷歌的数据,并且在短时间内非常频繁地抓取它,你将无法抓取它。谷歌此时限制了你的ip地址,你可以换个代理重新抓取。
3.post数据后,抓取数据
数据提交数据单独说一下,因为在使用curl的时候,很多情况下都会有数据交互,所以比较重要。
在upload.php 文件中,print_r($_POST); 使用 curl 捕获 upload.php 输出的内容数组( [name] => test [sex] => 1 [birth] => 20101010 )
4.爬取一些带有页面访问控制的页面
之前写过一篇文章,对页面访问控制的3种方法感兴趣的可以看看。
如果使用上面提到的方法进行捕获,会报如下错误
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 WWW-Authenticate 标头字段。
这时候,我们将使用 CURLOPT_USERPWD 来验证
以上5个常用php curl的经典例子,都是小编分享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。 查看全部
php curl抓取网页指定内容(我用php抓取数据的抓取方法抓的话的错误Youareauthorized)
我用的是php,curl主要是抓取数据,当然我们也可以用其他的方法抓取,比如fsockopen,file_get_contents等等。但它只能抓取那些可以直接访问的页面。如果要抓取有页面访问控制的页面,或者登录后的页面,就比较难了。
1.无访问控制抓取文件
2.使用代理进行爬取
为什么要使用代理进行抓取?以谷歌为例。如果你抓取谷歌的数据,并且在短时间内非常频繁地抓取它,你将无法抓取它。谷歌此时限制了你的ip地址,你可以换个代理重新抓取。
3.post数据后,抓取数据
数据提交数据单独说一下,因为在使用curl的时候,很多情况下都会有数据交互,所以比较重要。
在upload.php 文件中,print_r($_POST); 使用 curl 捕获 upload.php 输出的内容数组( [name] => test [sex] => 1 [birth] => 20101010 )
4.爬取一些带有页面访问控制的页面
之前写过一篇文章,对页面访问控制的3种方法感兴趣的可以看看。
如果使用上面提到的方法进行捕获,会报如下错误
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 WWW-Authenticate 标头字段。
这时候,我们将使用 CURLOPT_USERPWD 来验证
以上5个常用php curl的经典例子,都是小编分享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。
php curl抓取网页指定内容( PHP中使用curl的步骤、一个简单的curl代码实例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 119 次浏览 • 2022-02-20 15:00
PHP中使用curl的步骤、一个简单的curl代码实例)
本文章主要介绍PHP中使用curl的入门教程。本文讲解了curl的概述、curl的安装、PHP中curl的使用步骤、curl代码的简单示例等,有需要的朋友可以参考以下
安装卷曲
关于curl的安装,这里就不过多介绍了。windows和linux都是同一个进程,根据平台选择对应的安装方式,然后在php.ini文件中启用curl扩展,和其他扩展的安装一样。
在 PHP 中使用 curl 的步骤
在PHP中可以使用curl来完成各种功能,比如爬取网页、上传/下载文件、模拟登录等等。但是这些功能的实现都是基于四个步骤,所以curl的使用并不复杂。
在使用 curl 时,主要分为以下四个步骤:
1.初始化一个 curl 实例——curl_init()
2.curl执行时设置相关选项——curl_setopt()
3.执行 curl 查询 - curl_exec()
4.关闭 curl—curl_close()
四个步骤中,1、3、4 个步骤都很简单。最麻烦的一步是2步。此步骤设置 curl 的选项。有超过 100 种不同的选择。要完成不同的功能,必须将这些选项组合起来。
这四个步骤描述如下:
1.初始化一个curl实例,这一步使用函数curl_init(),查看PHP手册,可以看到该函数的返回值是一个资源类型,我们需要使用一个变量来保存这个实例,因为此示例将在以下步骤中使用。具体代码示例:
$curl=curl_init(); //输出资源(2, curl)
2. 要设置 curl 相关选项,请使用函数 curl_setopt() 设置 curl 选项。这个函数接受三个参数:第一个参数是要设置的curl的实例,也就是第一步中的实例,第二个参数中要设置的选项是一个预定义的常量,还有哪些选项,可以查看它在手册中。第三个参数是要设置的选项的具体值。
代码示例:
curl_setopt ($curl, CURLOPT_URL, "");
3.执行curl查询,这一步使用函数curl_exec()。该函数接受一个参数,也就是第一步得到的实例。
代码示例:
curl_exec ($curl);
4.关闭当前的curl,这一步使用函数curl_close()。该函数还接受步骤 1 中获得的 curl 实例作为参数。
代码示例:
curl_close($curl);
PHP中curl的使用一般遵循这四个步骤,其中不同的功能主要是通过两步的不同设置来完成的,所以第二步是最麻烦的,有的甚至需要大家仔细理解。
一个简单的 curl 代码示例
已经为大家介绍了使用 curl 的四个步骤。下面是一个抓取网页内容示例的简要演示。代码很简单,但希望能帮助你更好地理解curl。 查看全部
php curl抓取网页指定内容(
PHP中使用curl的步骤、一个简单的curl代码实例)

本文章主要介绍PHP中使用curl的入门教程。本文讲解了curl的概述、curl的安装、PHP中curl的使用步骤、curl代码的简单示例等,有需要的朋友可以参考以下
安装卷曲
关于curl的安装,这里就不过多介绍了。windows和linux都是同一个进程,根据平台选择对应的安装方式,然后在php.ini文件中启用curl扩展,和其他扩展的安装一样。
在 PHP 中使用 curl 的步骤
在PHP中可以使用curl来完成各种功能,比如爬取网页、上传/下载文件、模拟登录等等。但是这些功能的实现都是基于四个步骤,所以curl的使用并不复杂。
在使用 curl 时,主要分为以下四个步骤:
1.初始化一个 curl 实例——curl_init()
2.curl执行时设置相关选项——curl_setopt()
3.执行 curl 查询 - curl_exec()
4.关闭 curl—curl_close()
四个步骤中,1、3、4 个步骤都很简单。最麻烦的一步是2步。此步骤设置 curl 的选项。有超过 100 种不同的选择。要完成不同的功能,必须将这些选项组合起来。
这四个步骤描述如下:
1.初始化一个curl实例,这一步使用函数curl_init(),查看PHP手册,可以看到该函数的返回值是一个资源类型,我们需要使用一个变量来保存这个实例,因为此示例将在以下步骤中使用。具体代码示例:
$curl=curl_init(); //输出资源(2, curl)
2. 要设置 curl 相关选项,请使用函数 curl_setopt() 设置 curl 选项。这个函数接受三个参数:第一个参数是要设置的curl的实例,也就是第一步中的实例,第二个参数中要设置的选项是一个预定义的常量,还有哪些选项,可以查看它在手册中。第三个参数是要设置的选项的具体值。
代码示例:
curl_setopt ($curl, CURLOPT_URL, "");
3.执行curl查询,这一步使用函数curl_exec()。该函数接受一个参数,也就是第一步得到的实例。
代码示例:
curl_exec ($curl);
4.关闭当前的curl,这一步使用函数curl_close()。该函数还接受步骤 1 中获得的 curl 实例作为参数。
代码示例:
curl_close($curl);
PHP中curl的使用一般遵循这四个步骤,其中不同的功能主要是通过两步的不同设置来完成的,所以第二步是最麻烦的,有的甚至需要大家仔细理解。
一个简单的 curl 代码示例
已经为大家介绍了使用 curl 的四个步骤。下面是一个抓取网页内容示例的简要演示。代码很简单,但希望能帮助你更好地理解curl。
php curl抓取网页指定内容(curl利用URL规则在命令行下工做的文件传输工具(图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 105 次浏览 • 2022-02-19 20:18
)
curl 命令是一个文件传输工具,它使用 URL 规则从命令行工作。它支持文件上传和下载,是一个综合性的传输工具,但按照传统,curl被称为下载工具。curl作为一个强大的工具,支持多种协议,包括HTTP、HTTPS、ftp等。它还支持POST、cookies、身份验证、从指定偏移量下载部分文件、用户代理字符串、速度限制、文件大小、进度条等。特征。对于自动化网页处理和数据检索,curl 可以提供帮助。php
下载单个文件,默认打印输出到标准输出(STDOUT)html
curl http://www.centos.org
通过 -o/-O 选项将下载的文件保存到指定文件:
-o:将文件另存为文件名,文件名在命令行中指定
-O:使用URL中的默认文件名将文件保存到本地git
1 # 将文件下载到本地并命名为mygettext.html
2 curl -o mygettext.html http://www.gnu.org/software/ge ... .html
3
4 # 将文件保存到本地并命名为gettext.html
5 curl -O http://www.gnu.org/software/ge ... .html
也可以使用转向字符“>”将输出转为输出github
同时获取多个文件 centos
1 curl -O URL1 -O URL2
当同时从同一个站点下载多个文件时,curl 会尝试重用连接。api
通过 -L 选项重定向
默认情况下,CURL 不发送 HTTP Location 标头(重定向)。当请求的页面移动到另一个站点时,HTTP Loaction 标头作为请求发送,然后请求被重定向到新地址。
例如:访问时,地址会自动重定向到.hk。重击
1 curl http://www.google.com
2
3
4
5 302 Moved
6
7
8 302 Moved
9 The document has moved
10 <A HREF="http://www.google.com.hk/url%3 ... t%3B.
11
12
上面的输出显示请求的存档已移至。服务器
可以使用 -L 选项强制重定向 cookie
1 # 让curl使用地址重定向,此时会查询google.com.hk站点
2 curl -L http://www.google.com
恢复网络
通过使用 -C 选项,您可以对大文件使用可恢复上传功能,例如:
1 # 当文件在下载完成以前结束该进程
2 $ curl -O http://www.gnu.org/software/ge ... .html
3 ############## 20.1%
4
5 # 经过添加-C选项继续对该文件进行下载,已经下载过的文件不会被从新下载
6 curl -C - -O http://www.gnu.org/software/ge ... .html
7 ############### 21.1%
使用 CURL 进行网络限速
通过 --limit-rate 选项限制 CURL 的最大网络使用量
1 # 下载速度最大不会超过1000B/second
2
3 curl --limit-rate 1000B -O http://www.gnu.org/software/ge ... .html
下载指定时间内修改过的文件
下载文件时,可以判断文件的最后修改日期。如果文件在指定日期内被修改过,则下载,否则不下载。
此功能可以通过使用 -z 选项来实现:
1 # 若yy.html文件在2011/12/21以后有过更新才会进行下载
2 curl -z 21-Dec-11 http://www.example.com/yy.html
卷曲授权
访问需要授权的页面时,可以通过 -u 选项提供用户名和密码进行授权
1 curl -u username:password URL
2
3 # 一般的作法是在命令行只输入用户名,以后会提示输入密码,这样能够保证在查看历史记录时不会将密码泄露
4 curl -u username URL
从 FTP 服务器下载文件
CURL 还支持 FTP 下载。如果在 url 中指定了文件路径,而不是指定要下载的特定文件名,则 CURL 将列出目录中的所有文件名,而不是下载目录中的所有文件。文档
1 # 列出public_html下的全部文件夹和文件
2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
3
4 # 下载xss.php文件
5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
上传文件到 FTP 服务器
-T选项后,可以将指定的本地文件上传到FTP服务器
# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
获取更多信息
使用 -v 和 -trace 获取更多连接信息
通过字典查询单词
1 # 查询bash单词的含义
2 curl dict://dict.org/d:bash
3
4 # 列出全部可用词典
5 curl dict://dict.org/show:db
6
7 # 在foldoc词典中查询bash单词的含义
8 curl dict://dict.org/d:bash:foldoc
为 CURL 设置代理
-x 选项将代理功能添加到 CURL
1 # 指定代理主机和端口
2 curl -x proxysever.test.com:3128 http://google.co.in
剩下的网站整理
网站cookie 信息的存储和使用
1 # 将网站的cookies信息保存到sugarcookies文件中
2 curl -D sugarcookies http://localhost/sugarcrm/index.php
3
4 # 使用上次保存的cookie信息
5 curl -b sugarcookies http://localhost/sugarcrm/index.php
传递请求数据
curl 默认使用 GET 方法请求数据,这种方式直接通过 URL 传递数据
可以通过 --data/-d 方法指定使用 POST 方法来传递数据
1 # GET
2 curl -u username https://api.github.com/user%3F ... XXXXX
3
4 # POST
5 curl -u username --data "param1=value1¶m2=value" https://api.github.com
6
7 # 也能够指定一个文件,将该文件中的内容看成数据传递给服务器端
8 curl --data @filename https://github.api.com/authorizations
注意:默认情况下,如果通过 POST 传递的数据中存在特殊字符,则必须先将特殊字符转义到服务器。如果值收录空格,则必须先将空格转换为 %20。如:
1 curl -d "value%201" http://hostname.com
在新版本的 CURL 中,提供了一个新的选项 --data-urlencode,该选项提供的参数会自动转义特殊字符。
1 curl --data-urlencode "value 1" http://hostname.com
除了使用 GET 和 POST 协议外,还可以通过 -X 选项指定其他协议,例如:
1 curl -I -X DELETE https://api.github.cim
上传文件
1 curl --form "fileupload=@filename.txt" http://hostname/resource 查看全部
php curl抓取网页指定内容(curl利用URL规则在命令行下工做的文件传输工具(图)
)
curl 命令是一个文件传输工具,它使用 URL 规则从命令行工作。它支持文件上传和下载,是一个综合性的传输工具,但按照传统,curl被称为下载工具。curl作为一个强大的工具,支持多种协议,包括HTTP、HTTPS、ftp等。它还支持POST、cookies、身份验证、从指定偏移量下载部分文件、用户代理字符串、速度限制、文件大小、进度条等。特征。对于自动化网页处理和数据检索,curl 可以提供帮助。php
下载单个文件,默认打印输出到标准输出(STDOUT)html
curl http://www.centos.org
通过 -o/-O 选项将下载的文件保存到指定文件:
-o:将文件另存为文件名,文件名在命令行中指定
-O:使用URL中的默认文件名将文件保存到本地git
1 # 将文件下载到本地并命名为mygettext.html
2 curl -o mygettext.html http://www.gnu.org/software/ge ... .html
3
4 # 将文件保存到本地并命名为gettext.html
5 curl -O http://www.gnu.org/software/ge ... .html
也可以使用转向字符“>”将输出转为输出github
同时获取多个文件 centos
1 curl -O URL1 -O URL2
当同时从同一个站点下载多个文件时,curl 会尝试重用连接。api
通过 -L 选项重定向
默认情况下,CURL 不发送 HTTP Location 标头(重定向)。当请求的页面移动到另一个站点时,HTTP Loaction 标头作为请求发送,然后请求被重定向到新地址。
例如:访问时,地址会自动重定向到.hk。重击

1 curl http://www.google.com
2
3
4
5 302 Moved
6
7
8 302 Moved
9 The document has moved
10 <A HREF="http://www.google.com.hk/url%3 ... t%3B.
11
12

上面的输出显示请求的存档已移至。服务器
可以使用 -L 选项强制重定向 cookie
1 # 让curl使用地址重定向,此时会查询google.com.hk站点
2 curl -L http://www.google.com
恢复网络
通过使用 -C 选项,您可以对大文件使用可恢复上传功能,例如:

1 # 当文件在下载完成以前结束该进程
2 $ curl -O http://www.gnu.org/software/ge ... .html
3 ############## 20.1%
4
5 # 经过添加-C选项继续对该文件进行下载,已经下载过的文件不会被从新下载
6 curl -C - -O http://www.gnu.org/software/ge ... .html
7 ############### 21.1%

使用 CURL 进行网络限速
通过 --limit-rate 选项限制 CURL 的最大网络使用量
1 # 下载速度最大不会超过1000B/second
2
3 curl --limit-rate 1000B -O http://www.gnu.org/software/ge ... .html
下载指定时间内修改过的文件
下载文件时,可以判断文件的最后修改日期。如果文件在指定日期内被修改过,则下载,否则不下载。
此功能可以通过使用 -z 选项来实现:
1 # 若yy.html文件在2011/12/21以后有过更新才会进行下载
2 curl -z 21-Dec-11 http://www.example.com/yy.html
卷曲授权
访问需要授权的页面时,可以通过 -u 选项提供用户名和密码进行授权
1 curl -u username:password URL
2
3 # 一般的作法是在命令行只输入用户名,以后会提示输入密码,这样能够保证在查看历史记录时不会将密码泄露
4 curl -u username URL
从 FTP 服务器下载文件
CURL 还支持 FTP 下载。如果在 url 中指定了文件路径,而不是指定要下载的特定文件名,则 CURL 将列出目录中的所有文件名,而不是下载目录中的所有文件。文档
1 # 列出public_html下的全部文件夹和文件
2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
3
4 # 下载xss.php文件
5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
上传文件到 FTP 服务器
-T选项后,可以将指定的本地文件上传到FTP服务器

# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

获取更多信息
使用 -v 和 -trace 获取更多连接信息
通过字典查询单词

1 # 查询bash单词的含义
2 curl dict://dict.org/d:bash
3
4 # 列出全部可用词典
5 curl dict://dict.org/show:db
6
7 # 在foldoc词典中查询bash单词的含义
8 curl dict://dict.org/d:bash:foldoc

为 CURL 设置代理
-x 选项将代理功能添加到 CURL
1 # 指定代理主机和端口
2 curl -x proxysever.test.com:3128 http://google.co.in
剩下的网站整理
网站cookie 信息的存储和使用
1 # 将网站的cookies信息保存到sugarcookies文件中
2 curl -D sugarcookies http://localhost/sugarcrm/index.php
3
4 # 使用上次保存的cookie信息
5 curl -b sugarcookies http://localhost/sugarcrm/index.php
传递请求数据
curl 默认使用 GET 方法请求数据,这种方式直接通过 URL 传递数据
可以通过 --data/-d 方法指定使用 POST 方法来传递数据

1 # GET
2 curl -u username https://api.github.com/user%3F ... XXXXX
3
4 # POST
5 curl -u username --data "param1=value1¶m2=value" https://api.github.com
6
7 # 也能够指定一个文件,将该文件中的内容看成数据传递给服务器端
8 curl --data @filename https://github.api.com/authorizations

注意:默认情况下,如果通过 POST 传递的数据中存在特殊字符,则必须先将特殊字符转义到服务器。如果值收录空格,则必须先将空格转换为 %20。如:
1 curl -d "value%201" http://hostname.com
在新版本的 CURL 中,提供了一个新的选项 --data-urlencode,该选项提供的参数会自动转义特殊字符。
1 curl --data-urlencode "value 1" http://hostname.com
除了使用 GET 和 POST 协议外,还可以通过 -X 选项指定其他协议,例如:
1 curl -I -X DELETE https://api.github.cim
上传文件
1 curl --form "fileupload=@filename.txt" http://hostname/resource
php curl抓取网页指定内容(mancurl常用参数curl命令参数介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-02-10 19:13
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
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.part1content/uploads/2010/09/compare_varnish.jpg
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 105 0 --:--:-- --:--:-- --:--:-- 0
[root@xi mytest]# curl -r 100-200 -o img.part2ontent/uploads/2010/09/compare_varnish.jpg
% 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.part3content/uploads/2010/09/compare_varnish.jpg
% 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。 查看全部
php curl抓取网页指定内容(mancurl常用参数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
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.part1content/uploads/2010/09/compare_varnish.jpg
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 105 0 --:--:-- --:--:-- --:--:-- 0
[root@xi mytest]# curl -r 100-200 -o img.part2ontent/uploads/2010/09/compare_varnish.jpg
% 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.part3content/uploads/2010/09/compare_varnish.jpg
% 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。
php curl抓取网页指定内容(中国博客联盟第一次成员站点存活检测的结果是什么?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 48 次浏览 • 2022-02-09 20:25
在建中国博客联盟之初,有博主提醒我,URL大全等网站维护非常麻烦,调试一些已经死掉的网站需要耗费很大的精力,甚至以松哥的博客为例。当然,我也这么认为。前段时间看了梦轩立人boke123网站的维修记录,貌似是纯人工检查。张歌真的很佩服这五具尸体,他也太有毅力了。
现在博客联盟收录也有超过200个博客,全部来自自投。无论你是草博还是名博,张哥都不会强买强卖。由于大多是刚成立半年的新站点,大概还有一些半途而废、提前太监的博客,所以我决定开始做站点维护工作。
早上用PHP做了一个,放到京东云上试用了一下。发现检测速度一般,等了很久(我写的php太蹩脚了,就不丑了)。
随后在VPS上写了一个多线程的网站状态检测脚本,直接从数据库中加载站点地址,然后用curl检测返回码,发现速度非常好,而且1分钟内基本出结果。
这是脚本代码:
ps:关于,后续文章会有详细说明,本文篇幅有限,不再多说。
以下是中国博客联盟第一次会员网站生存测试的结果:
①。返回码非 200 的异常站点:
②、脚本爬取的无法访问的站点:
手动访问过滤结果:
(王映雪博客):无法访问,确认在记录中√
(长江博客):无障碍√
(麦兜科技博客):无法访问 ×
(教师日记):无障碍√
(三秒兔):无法访问 ×
(小蚂蚁博客):无障碍√
(李文东博客):可以访问√
ps:脚本检测机制是:如果8s内没有连接,则判断异常,重试3次,输出最终结果。如果3次都异常,就是000。从图中和人工筛选可以看出,有些误杀,这和8s的设置有一定的关系。您可以考虑将其设置为更长的时间以获得更准确的结果。当然,最终还是会结合人工确认,所以也无所谓。
后续,中国博客联盟将制定一个检查周期,最短一周一次,最长一个月一次,让每个展示的站点都能正常访问。当然,我也会在中国博客联盟的站长信息栏目中公布每次检查的结果,以方便各位会员。
由于中国博客联盟目前部署在京东云清,无法远程控制数据库,只能暂时使用半自动模式。以后有时间迁移到阿里云等VPS的时候,脚本会改成全自动状态。当检测到网站 联系人多次断开连接时,将其临时设置为隐藏状态。 查看全部
php curl抓取网页指定内容(中国博客联盟第一次成员站点存活检测的结果是什么?)
在建中国博客联盟之初,有博主提醒我,URL大全等网站维护非常麻烦,调试一些已经死掉的网站需要耗费很大的精力,甚至以松哥的博客为例。当然,我也这么认为。前段时间看了梦轩立人boke123网站的维修记录,貌似是纯人工检查。张歌真的很佩服这五具尸体,他也太有毅力了。
现在博客联盟收录也有超过200个博客,全部来自自投。无论你是草博还是名博,张哥都不会强买强卖。由于大多是刚成立半年的新站点,大概还有一些半途而废、提前太监的博客,所以我决定开始做站点维护工作。
早上用PHP做了一个,放到京东云上试用了一下。发现检测速度一般,等了很久(我写的php太蹩脚了,就不丑了)。
随后在VPS上写了一个多线程的网站状态检测脚本,直接从数据库中加载站点地址,然后用curl检测返回码,发现速度非常好,而且1分钟内基本出结果。
这是脚本代码:
ps:关于,后续文章会有详细说明,本文篇幅有限,不再多说。
以下是中国博客联盟第一次会员网站生存测试的结果:
①。返回码非 200 的异常站点:
②、脚本爬取的无法访问的站点:
手动访问过滤结果:
(王映雪博客):无法访问,确认在记录中√
(长江博客):无障碍√
(麦兜科技博客):无法访问 ×
(教师日记):无障碍√
(三秒兔):无法访问 ×
(小蚂蚁博客):无障碍√
(李文东博客):可以访问√
ps:脚本检测机制是:如果8s内没有连接,则判断异常,重试3次,输出最终结果。如果3次都异常,就是000。从图中和人工筛选可以看出,有些误杀,这和8s的设置有一定的关系。您可以考虑将其设置为更长的时间以获得更准确的结果。当然,最终还是会结合人工确认,所以也无所谓。
后续,中国博客联盟将制定一个检查周期,最短一周一次,最长一个月一次,让每个展示的站点都能正常访问。当然,我也会在中国博客联盟的站长信息栏目中公布每次检查的结果,以方便各位会员。
由于中国博客联盟目前部署在京东云清,无法远程控制数据库,只能暂时使用半自动模式。以后有时间迁移到阿里云等VPS的时候,脚本会改成全自动状态。当检测到网站 联系人多次断开连接时,将其临时设置为隐藏状态。
php curl抓取网页指定内容(PHP自带的http_build_query()使用总结)
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2022-02-06 18:12
本篇文章将向大家介绍如何使用curl获取php中的数据。内容非常详细。有兴趣的朋友可以参考一下。我希望它可以对大家有所帮助。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
这里分享了如何使用curl获取php中的数据。希望以上内容能对你有所帮助,让你学习到更多的知识。如果你觉得文章不错,可以分享给更多人看到。 查看全部
php curl抓取网页指定内容(PHP自带的http_build_query()使用总结)
本篇文章将向大家介绍如何使用curl获取php中的数据。内容非常详细。有兴趣的朋友可以参考一下。我希望它可以对大家有所帮助。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
这里分享了如何使用curl获取php中的数据。希望以上内容能对你有所帮助,让你学习到更多的知识。如果你觉得文章不错,可以分享给更多人看到。
php curl抓取网页指定内容( PHP通过正则表达式判断内容中的远程图片的资料请关注脚本之家)
网站优化 • 优采云 发表了文章 • 0 个评论 • 36 次浏览 • 2022-02-06 10:18
PHP通过正则表达式判断内容中的远程图片的资料请关注脚本之家)
php中通过正则表达式下载内容中远程图片的函数代码
更新时间:2012年1月10日12:01:30 投稿:mdxy-dxy
下午抽空写了个程序,用PHP正则表达式判断内容中的图片,下载并保存不在本域名下的图片
这个程序实际上是“小偷程序”的重要组成部分。这部分程序只是下载远程图片的部分。程序比较简单,大部分部分都有注释。
if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)){
$i=0; //多个文件++
while(list($key ,$v) = each($aliurl[0])){
//echo $v."<br />";
$filetype = pathinfo($v, PATHINFO_EXTENSION); //获取后缀名
$ff = @file_get_contents($v); //获取2进制文件内容
if(!stripos($v,"jb51.net")){//判断是否是自己网站下的图片
if (!empty($ff)){ //获取到文件就执行下面的操作
$dir = "upload/".date("Ymd")."/";//指定新的存储路径
if (!file_exists($dir)){//判断目录是否存在
@mkdir($dir,511,true); //创建多级目录,511转换成十进制是777具有可执行权限
}
$nfn = $dir.date("Ymdhis").$i.".".$filetype; //构建文件的新名字
$nf = @fopen($nfn,"w"); //创建文件
fwrite($nf,$ff); //写入文件
fclose($nf); //关闭文件
$i++; //多文件++
echo "";
$content = str_replace($v,$nfn, $content);//替换content中的参数
}else{//获取不到图片则替换为默认图片
$content = str_replace($v,"/upload/201204/20120417213810742.gif", $content);//替换content中的参数
}
}
}
}
PHP通过正则表达式下载图片到本地实现代码
请参阅下面的示例
<p>
function get_pic_url($content){
$pattern="/ 查看全部
php curl抓取网页指定内容(
PHP通过正则表达式判断内容中的远程图片的资料请关注脚本之家)
php中通过正则表达式下载内容中远程图片的函数代码
更新时间:2012年1月10日12:01:30 投稿:mdxy-dxy
下午抽空写了个程序,用PHP正则表达式判断内容中的图片,下载并保存不在本域名下的图片
这个程序实际上是“小偷程序”的重要组成部分。这部分程序只是下载远程图片的部分。程序比较简单,大部分部分都有注释。
if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)){
$i=0; //多个文件++
while(list($key ,$v) = each($aliurl[0])){
//echo $v."<br />";
$filetype = pathinfo($v, PATHINFO_EXTENSION); //获取后缀名
$ff = @file_get_contents($v); //获取2进制文件内容
if(!stripos($v,"jb51.net")){//判断是否是自己网站下的图片
if (!empty($ff)){ //获取到文件就执行下面的操作
$dir = "upload/".date("Ymd")."/";//指定新的存储路径
if (!file_exists($dir)){//判断目录是否存在
@mkdir($dir,511,true); //创建多级目录,511转换成十进制是777具有可执行权限
}
$nfn = $dir.date("Ymdhis").$i.".".$filetype; //构建文件的新名字
$nf = @fopen($nfn,"w"); //创建文件
fwrite($nf,$ff); //写入文件
fclose($nf); //关闭文件
$i++; //多文件++
echo "";
$content = str_replace($v,$nfn, $content);//替换content中的参数
}else{//获取不到图片则替换为默认图片
$content = str_replace($v,"/upload/201204/20120417213810742.gif", $content);//替换content中的参数
}
}
}
}
PHP通过正则表达式下载图片到本地实现代码
请参阅下面的示例
<p>
function get_pic_url($content){
$pattern="/
php curl抓取网页指定内容(phpcurlpost和patch都是不可逆请求方式(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-01-31 03:01
phpcurl抓取网页指定内容代码phpcurl抓取网页指定内容.php的curl函数-csdn博客phpcurl抓取网页指定内容,抓取的内容就是你要的get请求.
request
postget。这个文档里有。简单的说就是向a发送请求,接受结果返回给b。比如你看一个页面,先发个get包给浏览器,然后request,
curl
post,
selenium用的比较多
1、post,get,put,delete2、seti其他专业术语就不说了
post
so
post,get,put,
你都要抓取啥东西啊
最常用的是post
post,get,
ssl?request-form-header
post?
getpost
site-postdelete?
.
.get,request,...post,
get是adapplication的用法,post是一个http服务器的用法
post,put,
post和get,delete,
post,get,patch,
post不需要url,直接就是json格式的返回。
get,
post和patch都是不可逆请求方式。post还能再请求回数据来证明是否是请求了一个namespace下的对象,而patch是请求来动态生成一个新对象,明显patch生成的对象比get给的更新。所以说post要比get更容易被识别出来。 查看全部
php curl抓取网页指定内容(phpcurlpost和patch都是不可逆请求方式(组图))
phpcurl抓取网页指定内容代码phpcurl抓取网页指定内容.php的curl函数-csdn博客phpcurl抓取网页指定内容,抓取的内容就是你要的get请求.
request
postget。这个文档里有。简单的说就是向a发送请求,接受结果返回给b。比如你看一个页面,先发个get包给浏览器,然后request,
curl
post,
selenium用的比较多
1、post,get,put,delete2、seti其他专业术语就不说了
post
so
post,get,put,
你都要抓取啥东西啊
最常用的是post
post,get,
ssl?request-form-header
post?
getpost
site-postdelete?
.
.get,request,...post,
get是adapplication的用法,post是一个http服务器的用法
post,put,
post和get,delete,
post,get,patch,
post不需要url,直接就是json格式的返回。
get,
post和patch都是不可逆请求方式。post还能再请求回数据来证明是否是请求了一个namespace下的对象,而patch是请求来动态生成一个新对象,明显patch生成的对象比get给的更新。所以说post要比get更容易被识别出来。
php curl抓取网页指定内容( curl要求php环境支持,需要的朋友可以参考下要求)
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2022-01-20 08:04
curl要求php环境支持,需要的朋友可以参考下要求)
php使用curl获取远程图片实现方法
更新时间:2015年10月26日15:14:20投稿:lijiao
本文文章主要介绍php使用curl获取远程图片的实现方法。 curl 需要 php 环境支持。有需要的朋友可以参考以下
curl 需要 php 环境支持。您可以运行 phpinfo() 函数来查看它是否支持它。一般需要去掉php.ini中php_curl.dll前面的;extension=,然后重启IIS或者APACHE。
代码如下:
/*
*@通过curl方式获取指定的图片到本地
*@ 完整的图片地址
*@ 要存储的文件名
*/
function getImg($url = "", $filename = "")
{
//去除URL连接上面可能的引号
//$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url );
$hander = curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp);
curl_setopt($hander,CURLOPT_HEADER,0);
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
curl_setopt($hander,CURLOPT_TIMEOUT,60);
curl_exec($hander);
curl_close($hander);
fclose($fp);
Return true;
}
调用的时候直接getImg("/logo.jpg","upload/image.jpg")
实现代码2
代码如下:
<p> 查看全部
php curl抓取网页指定内容(
curl要求php环境支持,需要的朋友可以参考下要求)
php使用curl获取远程图片实现方法
更新时间:2015年10月26日15:14:20投稿:lijiao
本文文章主要介绍php使用curl获取远程图片的实现方法。 curl 需要 php 环境支持。有需要的朋友可以参考以下
curl 需要 php 环境支持。您可以运行 phpinfo() 函数来查看它是否支持它。一般需要去掉php.ini中php_curl.dll前面的;extension=,然后重启IIS或者APACHE。
代码如下:
/*
*@通过curl方式获取指定的图片到本地
*@ 完整的图片地址
*@ 要存储的文件名
*/
function getImg($url = "", $filename = "")
{
//去除URL连接上面可能的引号
//$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url );
$hander = curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp);
curl_setopt($hander,CURLOPT_HEADER,0);
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
curl_setopt($hander,CURLOPT_TIMEOUT,60);
curl_exec($hander);
curl_close($hander);
fclose($fp);
Return true;
}
调用的时候直接getImg("/logo.jpg","upload/image.jpg")
实现代码2
代码如下:
<p>
php curl抓取网页指定内容(phpcurl抓取网页指定内容。(抓取目录下面的话))
网站优化 • 优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2022-01-14 04:02
phpcurl抓取网页指定内容。这篇博客主要写抓取网页目录下面的script标签的内容。
0)mysql:5.1.19express:1.1.2(mysqlversion6.2.19.1.08
0)browser:nginx:18.12(engine1.1
1)ssl:ssh:3.3.1(ssl1.2.18.1.04063
4)mongodb:3.5.1.0(local)python:3.6.4.2pandas:2.13.2/python2.7.7/requests:3.0.3scrapy:3.0.4(openframework6.2.0alpha(alpha
0)(2018.11.1
3)(pythoncheckpoint))目前我的路由是:http/1.1.0301重定向prefixphp.ini文件(最好不要是默认路径)修改注意:apache默认的根目录地址是/var/lib/php-fpm/(apache也支持根目录下的php.ini文件.但是毕竟不是默认路径),所以我们可以不修改apache,而是修改php文件中的php.ini文件。
express:设置项:-all-fastcgi-paths.so/conf/conf.php注意:php.ini文件不要放在根目录下面,只有注释掉if这个符号才可以,其他的都需要放在/etc/中。2.php的版本控制在github上面有php的版本控制,不过是后端数据库的版本控制。本文以nginx为例,记住一定要把php文件夹包含在php文件中。
nginx的核心依赖是http.connector,包含了整个nginx的核心,所以我们把php文件放在nginx根目录下。所以我们需要把这个文件,也就是nginx的根目录下载下来:nginx:/var/lib/nginx/conf/nginx.conf自己修改一下。注意:把这个文件放在根目录下面的话,前端的php请求所在路径都不一定可用:nginx:/var/lib/nginx/sbin/nginx无论什么版本都是这样,如果文件放在根目录下,那么请复制到外网的nginx/bin中。
3.对于不同环境,如何解决问题/*要切换路径,如果目录是根目录就可以了*//*如果由于缓存之类的原因导致缓存文件失效,那么就删除log,重新放在根目录*//*如果是因为部署,缓存文件没有了,找不到缓存的具体位置,那么就需要缓存重新读取之后再放到根目录*//*如果是某个dll文件失效了,需要设置缓存,是后端dll.*/*抓取到的是网页的内容,并不是某个文件。
/*目录名称其实只是方便了别人清楚网页的目录,如果是仅仅想抓取网页指定的某个目录下面的内容那么就可以指定网页的目录名称*//*如果是仅仅想指定网页的文件名,方便别人下载别人的文件而不是自己写代。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容。(抓取目录下面的话))
phpcurl抓取网页指定内容。这篇博客主要写抓取网页目录下面的script标签的内容。
0)mysql:5.1.19express:1.1.2(mysqlversion6.2.19.1.08
0)browser:nginx:18.12(engine1.1
1)ssl:ssh:3.3.1(ssl1.2.18.1.04063
4)mongodb:3.5.1.0(local)python:3.6.4.2pandas:2.13.2/python2.7.7/requests:3.0.3scrapy:3.0.4(openframework6.2.0alpha(alpha
0)(2018.11.1
3)(pythoncheckpoint))目前我的路由是:http/1.1.0301重定向prefixphp.ini文件(最好不要是默认路径)修改注意:apache默认的根目录地址是/var/lib/php-fpm/(apache也支持根目录下的php.ini文件.但是毕竟不是默认路径),所以我们可以不修改apache,而是修改php文件中的php.ini文件。
express:设置项:-all-fastcgi-paths.so/conf/conf.php注意:php.ini文件不要放在根目录下面,只有注释掉if这个符号才可以,其他的都需要放在/etc/中。2.php的版本控制在github上面有php的版本控制,不过是后端数据库的版本控制。本文以nginx为例,记住一定要把php文件夹包含在php文件中。
nginx的核心依赖是http.connector,包含了整个nginx的核心,所以我们把php文件放在nginx根目录下。所以我们需要把这个文件,也就是nginx的根目录下载下来:nginx:/var/lib/nginx/conf/nginx.conf自己修改一下。注意:把这个文件放在根目录下面的话,前端的php请求所在路径都不一定可用:nginx:/var/lib/nginx/sbin/nginx无论什么版本都是这样,如果文件放在根目录下,那么请复制到外网的nginx/bin中。
3.对于不同环境,如何解决问题/*要切换路径,如果目录是根目录就可以了*//*如果由于缓存之类的原因导致缓存文件失效,那么就删除log,重新放在根目录*//*如果是因为部署,缓存文件没有了,找不到缓存的具体位置,那么就需要缓存重新读取之后再放到根目录*//*如果是某个dll文件失效了,需要设置缓存,是后端dll.*/*抓取到的是网页的内容,并不是某个文件。
/*目录名称其实只是方便了别人清楚网页的目录,如果是仅仅想抓取网页指定的某个目录下面的内容那么就可以指定网页的目录名称*//*如果是仅仅想指定网页的文件名,方便别人下载别人的文件而不是自己写代。
php curl抓取网页指定内容( 命令行下的cURL能做什么(本文)(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-01-13 00:21
命令行下的cURL能做什么(本文)(组图))
最近准备入手一个PHP爬虫,发现PHP的cURL的知识绕不过去。本文讨论的是基础实战,需要提前了解命令行的使用,搭建PHP环境。
卷曲的概念
cURL,即客户端 URL 库函数,是一个开源文件传输工具,它使用 URL 语法在命令行模式下工作。它广泛用于 Unix 和 Linux 发行版,并且在 Win32、Win64 下有一个移植版本。常用的 cURL 库 libcurl 支持 http、https、ftp、gopher、telnet、dict、file 和 ldap 协议。libcurl 还支持 HTTPS 身份验证、HTTP POST、HTTP PUT、FTP 上传(这也可以通过 PHP 的 FTP 扩展完成)、基于 HTTP 表单的上传、代理、cookie 和用户名+密码身份验证。
[图片上传失败...(image-cc9fed-83)]](%7CimageView2/2/w/1240)
简而言之,cURL 是一个客户端启动的管理程序,它支持大多数 Internet 协议套件,并且可以下载或上传网络文件。
命令行下cURL可以做什么爬取网页源码
打开命令行,输入以下命令,向百度服务器发送请求,获取首页源代码。>命令将源代码输出保存到当前目录下的baidu.html。
curl https://www.baidu.com > baidu.html
获取表单 GET 或 POST 方法
网页中的标签通常用于生成表单。当我们点击表单中的提交按钮时,浏览器会对表单中填写的所有参数进行分析打包,最后通过指定的HTTP方式发送到目标网络地址。
如下代码所示,将用户在输入框中填写的参数信息添加到URL地址中,并发送GET方法到目标服务器下的judge.php。在 GET 方法中,值与表单中的每个字段一一对应。
GET方法中的参数会出现在URL地址中,所以我们也在基于命令行的cURL下进行模拟。
curl www.example.com/judge.php?year=1997&press=ok
URL 语法表示一般的 URL 地址格式如下。不难看出,上面示例代码中的year字段及其值是
实例。
://:@:/:?#
与 GET 方法不同,HTTP 中的 POST 请求将数据传输到服务器。由于经常会有账号、密码等隐私信息,所以这些数据通常会添加到 HTML Header 中,在 URL 地址中是不可见的,然后将数据传输到目标服务器。
在命令行上,cURL 将 POST 方法作为 -d 参数处理。
curl -d "year=1997&press=OK" www.example.com/judge.php
上传文件 POST 或 PUT 方法
1995 年末,RFC 1867 定义了一种用于上传文件的新 POST 方法。主要用于上传本地文件到服务器。此时页面内容如下:
对应的 cURL 命令使用 -F 作为命令参数,如下所示。
curl -F upload=@localfilename -F press=OK URL
HTTP 协议文件上传的标准方法是使用 PUT,在这种情况下 cURL 命令使用 -T 参数:
curl -T uploadfile www.uploadhttp. com/receive.php
假装是指定的客户
有些网络资源首先需要判断用户使用的是什么浏览器,符合标准才能下载或浏览。此时 curl 可以像任何其他浏览器一样“伪装”自己:
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL
该指令表示cURL伪装成IE5.0,用户平台为Windows 2000。
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL
此时 cURL 变成了 Netscape,运行在 PIII 平台上的 Linux 上。
和更多
在cURL的概念中提到,除了请求网页、上传文件和伪装外,cURL的功能还包括使用cookies访问目标服务器(参数-b)、访问加密的HTTP页面(HTTPS)、使用本地证书访问需要证书认证。网络上的所有资源都可以通过 cURL 访问和下载。
在 PHP 中使用 cURL
Daniel Stenberg 创建的 PHP 支持的 libcurl 库允许我们使用各种类型的协议与各种服务器进行连接和通信。
为了使用 cURL 功能,您需要安装 cURL 包。PHP 要求我们使用 cURL 7.0.2-beta 或更高版本。如果 cURL 的版本低于 7.0.2-beta,PHP 将无法工作。
要使用 PHP 的 CURL 支持,我们必须使用 --with-curl[=DIR] 参数重新编译 PHP(DIR 是收录库和头文件的目录)。
在前面提到的命令行下cURL的实现中,不难理解PHP中的cURL函数:首先使用curl_init()函数初始化cURL会话,然后就可以设置与这个cURL过程相关的所有选项,并通过 curl_exec() 函数执行它。最后,我们可以使用 curl_close() 函数来结束当前会话并节省资源。下面是 MOOC 上 PHP 中 cURL 过程的图示。
[图片上传失败...(image-1c28eb-84)]](%7CimageView2/2/w/1240)
安装卷曲
Mac 自带的 PHP 环境对 cURL 提供了很好的支持。如果它不是 Macintosh,也许这些可以提供帮助:
Generic Linux 下的 cURL 安装
获取安装包,直接从网上或者其他方式下载,这里直接wget
# wget http://curl.haxx.se/download/curl-7.17.1.tar.gz
解压到当前目录,输入
# tar -zxf curl-7.17.1.tar.gz & cd curl-7.17.1
配置,指定安装目录,这里是“/usr/local/curl”
# ./configure –prefix=/usr/local/curl
编译安装
安装完成后,将 curl 命令添加到环境变量中。
# export PATH=$PATH:/usr/local/curl/bin
Ubuntu小卷曲安装
Ubuntu 自带的 apt-get 包管理器可以帮助我们解决所有的依赖。
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
然后重启服务器,这里是apache服务器。
sudo /etc/init.d/apache2 restart
Windows下的扩展
Windows下安装PHP后,将PHP文件夹下的三个文件 php_curl.dll , libeay32.dll , ssleay32.dll 复制到system32中,然后将php.ini (c:WINDOWS 去掉分号后在 ;extension=php_curl.dll 中,在 ;extension=php_curl.dll 中,重启服务器。
开始实战
这里从简单到复杂的小Demo,一步一步来。
一个简单的带有 cURL 的网络爬虫
将以下 PHP 代码保存为 example1.php 并在命令行中执行。
php -f example1.php > baidu1.html
open baidu1.html
使用 cURL 抓取网页信息并替换部分内容
将以下 PHP 代码另存为 example2.php 并在命令行中执行。
php -f example2.php > baidu2.html
open baidu2.html
使用 cURL 获取天气信息
将以下 PHP 代码另存为 example2.php 并在命令行中执行。
php -f example2.php > weather.html
open weather.html
本文介绍cURL的基础知识和cURL在PHP中的基本实战。请期待更高级的用法。 查看全部
php curl抓取网页指定内容(
命令行下的cURL能做什么(本文)(组图))
最近准备入手一个PHP爬虫,发现PHP的cURL的知识绕不过去。本文讨论的是基础实战,需要提前了解命令行的使用,搭建PHP环境。
卷曲的概念
cURL,即客户端 URL 库函数,是一个开源文件传输工具,它使用 URL 语法在命令行模式下工作。它广泛用于 Unix 和 Linux 发行版,并且在 Win32、Win64 下有一个移植版本。常用的 cURL 库 libcurl 支持 http、https、ftp、gopher、telnet、dict、file 和 ldap 协议。libcurl 还支持 HTTPS 身份验证、HTTP POST、HTTP PUT、FTP 上传(这也可以通过 PHP 的 FTP 扩展完成)、基于 HTTP 表单的上传、代理、cookie 和用户名+密码身份验证。
[图片上传失败...(image-cc9fed-83)]](%7CimageView2/2/w/1240)
简而言之,cURL 是一个客户端启动的管理程序,它支持大多数 Internet 协议套件,并且可以下载或上传网络文件。
命令行下cURL可以做什么爬取网页源码
打开命令行,输入以下命令,向百度服务器发送请求,获取首页源代码。>命令将源代码输出保存到当前目录下的baidu.html。
curl https://www.baidu.com > baidu.html
获取表单 GET 或 POST 方法
网页中的标签通常用于生成表单。当我们点击表单中的提交按钮时,浏览器会对表单中填写的所有参数进行分析打包,最后通过指定的HTTP方式发送到目标网络地址。
如下代码所示,将用户在输入框中填写的参数信息添加到URL地址中,并发送GET方法到目标服务器下的judge.php。在 GET 方法中,值与表单中的每个字段一一对应。
GET方法中的参数会出现在URL地址中,所以我们也在基于命令行的cURL下进行模拟。
curl www.example.com/judge.php?year=1997&press=ok
URL 语法表示一般的 URL 地址格式如下。不难看出,上面示例代码中的year字段及其值是
实例。
://:@:/:?#
与 GET 方法不同,HTTP 中的 POST 请求将数据传输到服务器。由于经常会有账号、密码等隐私信息,所以这些数据通常会添加到 HTML Header 中,在 URL 地址中是不可见的,然后将数据传输到目标服务器。
在命令行上,cURL 将 POST 方法作为 -d 参数处理。
curl -d "year=1997&press=OK" www.example.com/judge.php
上传文件 POST 或 PUT 方法
1995 年末,RFC 1867 定义了一种用于上传文件的新 POST 方法。主要用于上传本地文件到服务器。此时页面内容如下:
对应的 cURL 命令使用 -F 作为命令参数,如下所示。
curl -F upload=@localfilename -F press=OK URL
HTTP 协议文件上传的标准方法是使用 PUT,在这种情况下 cURL 命令使用 -T 参数:
curl -T uploadfile www.uploadhttp. com/receive.php
假装是指定的客户
有些网络资源首先需要判断用户使用的是什么浏览器,符合标准才能下载或浏览。此时 curl 可以像任何其他浏览器一样“伪装”自己:
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL
该指令表示cURL伪装成IE5.0,用户平台为Windows 2000。
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL
此时 cURL 变成了 Netscape,运行在 PIII 平台上的 Linux 上。
和更多
在cURL的概念中提到,除了请求网页、上传文件和伪装外,cURL的功能还包括使用cookies访问目标服务器(参数-b)、访问加密的HTTP页面(HTTPS)、使用本地证书访问需要证书认证。网络上的所有资源都可以通过 cURL 访问和下载。
在 PHP 中使用 cURL
Daniel Stenberg 创建的 PHP 支持的 libcurl 库允许我们使用各种类型的协议与各种服务器进行连接和通信。
为了使用 cURL 功能,您需要安装 cURL 包。PHP 要求我们使用 cURL 7.0.2-beta 或更高版本。如果 cURL 的版本低于 7.0.2-beta,PHP 将无法工作。
要使用 PHP 的 CURL 支持,我们必须使用 --with-curl[=DIR] 参数重新编译 PHP(DIR 是收录库和头文件的目录)。
在前面提到的命令行下cURL的实现中,不难理解PHP中的cURL函数:首先使用curl_init()函数初始化cURL会话,然后就可以设置与这个cURL过程相关的所有选项,并通过 curl_exec() 函数执行它。最后,我们可以使用 curl_close() 函数来结束当前会话并节省资源。下面是 MOOC 上 PHP 中 cURL 过程的图示。
[图片上传失败...(image-1c28eb-84)]](%7CimageView2/2/w/1240)
安装卷曲
Mac 自带的 PHP 环境对 cURL 提供了很好的支持。如果它不是 Macintosh,也许这些可以提供帮助:
Generic Linux 下的 cURL 安装
获取安装包,直接从网上或者其他方式下载,这里直接wget
# wget http://curl.haxx.se/download/curl-7.17.1.tar.gz
解压到当前目录,输入
# tar -zxf curl-7.17.1.tar.gz & cd curl-7.17.1
配置,指定安装目录,这里是“/usr/local/curl”
# ./configure –prefix=/usr/local/curl
编译安装
安装完成后,将 curl 命令添加到环境变量中。
# export PATH=$PATH:/usr/local/curl/bin
Ubuntu小卷曲安装
Ubuntu 自带的 apt-get 包管理器可以帮助我们解决所有的依赖。
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
然后重启服务器,这里是apache服务器。
sudo /etc/init.d/apache2 restart
Windows下的扩展
Windows下安装PHP后,将PHP文件夹下的三个文件 php_curl.dll , libeay32.dll , ssleay32.dll 复制到system32中,然后将php.ini (c:WINDOWS 去掉分号后在 ;extension=php_curl.dll 中,在 ;extension=php_curl.dll 中,重启服务器。
开始实战
这里从简单到复杂的小Demo,一步一步来。
一个简单的带有 cURL 的网络爬虫
将以下 PHP 代码保存为 example1.php 并在命令行中执行。
php -f example1.php > baidu1.html
open baidu1.html
使用 cURL 抓取网页信息并替换部分内容
将以下 PHP 代码另存为 example2.php 并在命令行中执行。
php -f example2.php > baidu2.html
open baidu2.html
使用 cURL 获取天气信息
将以下 PHP 代码另存为 example2.php 并在命令行中执行。
php -f example2.php > weather.html
open weather.html
本文介绍cURL的基础知识和cURL在PHP中的基本实战。请期待更高级的用法。
php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-01-05 09:11
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br style="clear:both; width:0px; height:0px" />phpinfo();<br style="clear:both; width:0px; height:0px" />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br style="clear:both; width:0px; height:0px" />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'#39;);
// 设置标题
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<br style="clear:both; width:0px; height:0px" />$phoneNumber = '13912345678';<br style="clear:both; width:0px; height:0px" />$message = 'This message was generated by curl and php';<br style="clear:both; width:0px; height:0px" />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';<br style="clear:both; width:0px; height:0px" />$ch = curl_init();<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HEADER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_POST, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br style="clear:both; width:0px; height:0px" />$data = curl_exec();<br style="clear:both; width:0px; height:0px" />curl_close($ch);<br style="clear:both; width:0px; height:0px" />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br style="clear:both; width:0px; height:0px" />$ch = curl_init();<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HEADER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br style="clear:both; width:0px; height:0px" />$data = curl_exec();<br style="clear:both; width:0px; height:0px" />curl_close($ch);<br style="clear:both; width:0px; height:0px" />?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br style="clear:both; width:0px; height:0px" />phpinfo();<br style="clear:both; width:0px; height:0px" />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br style="clear:both; width:0px; height:0px" />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'#39;);
// 设置标题
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<br style="clear:both; width:0px; height:0px" />$phoneNumber = '13912345678';<br style="clear:both; width:0px; height:0px" />$message = 'This message was generated by curl and php';<br style="clear:both; width:0px; height:0px" />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';<br style="clear:both; width:0px; height:0px" />$ch = curl_init();<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HEADER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_POST, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br style="clear:both; width:0px; height:0px" />$data = curl_exec();<br style="clear:both; width:0px; height:0px" />curl_close($ch);<br style="clear:both; width:0px; height:0px" />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br style="clear:both; width:0px; height:0px" />$ch = curl_init();<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HEADER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br style="clear:both; width:0px; height:0px" />$data = curl_exec();<br style="clear:both; width:0px; height:0px" />curl_close($ch);<br style="clear:both; width:0px; height:0px" />?﹥
关于 SSL 和 Cookie
php curl抓取网页指定内容(,PHP,CURL获取,返回,值,的,方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-12-28 13:03
PHP CURL方法获取返回值, PHP, CURL, get, return, value, of, method, in, CURL, in
PHP CURL 方法获取返回值
易菜站长网站,站长之家整理了PHP CURL方法的相关内容,为您获取返回值。
CURL 中有一个参数 CURLOPT_RETURNTRANSFER:
代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
默认为0,直接返回获取的输出文本流。有时,我们需要将返回值用于判断或其他目的。
幸运的是,可以设置 CURLOPT_RETURNTRANSFER,如果设置为 CURLOPT_RETURNTRANSFER 1:
代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
然后你可以在没有 curl_close 的情况下关闭 cURL 会话之前使用它: curl_multi_getcontent($ch)
您可以获取服务器返回的值。它是一个字符串类型!
PHP手册如下:
代码如下:curl_multi_getcontent(resource $ch)
如果 CURLOPT_RETURNTRANSFER 作为选项设置为特定句柄,则该函数将以字符串的形式返回该 cURL 句柄获取的内容。
以上就是对获取PHP CURL返回值的方法的详细介绍。欢迎大家对PHP CURL方法获取返回值的内容提出宝贵意见 查看全部
php curl抓取网页指定内容(,PHP,CURL获取,返回,值,的,方法)
PHP CURL方法获取返回值, PHP, CURL, get, return, value, of, method, in, CURL, in
PHP CURL 方法获取返回值
易菜站长网站,站长之家整理了PHP CURL方法的相关内容,为您获取返回值。
CURL 中有一个参数 CURLOPT_RETURNTRANSFER:
代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
默认为0,直接返回获取的输出文本流。有时,我们需要将返回值用于判断或其他目的。
幸运的是,可以设置 CURLOPT_RETURNTRANSFER,如果设置为 CURLOPT_RETURNTRANSFER 1:
代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
然后你可以在没有 curl_close 的情况下关闭 cURL 会话之前使用它: curl_multi_getcontent($ch)
您可以获取服务器返回的值。它是一个字符串类型!
PHP手册如下:
代码如下:curl_multi_getcontent(resource $ch)
如果 CURLOPT_RETURNTRANSFER 作为选项设置为特定句柄,则该函数将以字符串的形式返回该 cURL 句柄获取的内容。
以上就是对获取PHP CURL返回值的方法的详细介绍。欢迎大家对PHP CURL方法获取返回值的内容提出宝贵意见
php curl抓取网页指定内容(一下基于DOM结构的爬虫框架怎么使用?(上))
网站优化 • 优采云 发表了文章 • 0 个评论 • 48 次浏览 • 2022-03-30 09:04
出品 | CSDN(ID:CSDNnews)
爬虫应用很广泛,比如搜索引擎、采集数据、广告过滤、数据分析等。我们爬几个网站内容还是可以写多个爬虫,但是不可能为需要爬取多个 网站 内容的项目编写多个爬虫。这就是我们需要智能爬虫的时候。
目前智能爬虫分为三种:
1. 基于网页内容的爬虫
当一个网页收录大量需要提取的信息时,我们需要使用基于网页内容的爬虫。爬虫将 HTML 视为文本并使用 NLP 技术对其进行处理。
这种基于网页内容的爬虫虽然可以减少爬虫的数量,但需要人工参与NLP模型的训练。没有AI开发经验或者AI开发经验很少的程序员很难写出这样的爬虫,爬虫的时间都花在了爬取上。很长而且效率很低。
2. 基于DOM结构的爬虫
基于DOM结构的爬虫比较简单,就是将HTML解析成DOM树,然后根据语法结构提取信息。这种方法比以前的方法更有效、更准确。
3. 基于视觉的爬虫
基于视觉的爬虫开发难度也很大。它通过浏览器接口或浏览器内核烧录目标页面,然后根据网页的视觉规律提取网页数据。这种爬虫需要利用神经网络中的CNN卷积神经网络来获取页面特定区域的内容。
最常用的爬虫框架是 Readability 和 Newspaper。下面我们来看看这两个框架的解释。
报纸
Newspaper 是一个使用 NLP 的智能爬虫框架,可以从页面中提取大量内容。要安装这个爬虫框架,需要先安装依赖:
shell
sudo apt-get install libxml2-dev libxslt-dev
sudo apt-get install libjpeg-dev zlib1g-dev libpng12-dev
以上安装中,如果libpng12-dev出现错误,需要安装libpng-dev。
接下来,您需要安装 NLP 语料库:
shell
curl https://raw.githubusercontent. ... ra.py | python3
最后我们安装报纸爬虫框架:
shell
pip install newspaper3k
我们举个例子看看Newspaper框架是怎么使用的:
python
from newspaper import Article
url = 'https://www.ithome.com/0/445/071.htm'
article = Article(url, language='zh')
article.download
article.parse
print('作者', article.authors)
print('标题', article.title)
print('发布日期', article.publish_date)
print('正文', article.text)
article.nlp
print('关键词', article.keywords)
print('摘要', article.summary)
上面代码中的 language='zh' 告诉 Newspaper 我们正在爬取中文网页。报纸会先下载页面,然后使用parse方法解析页面。页面解析后,可以得到作者、标题、发布日期等信息。如果要提取关键词和摘要,可以使用 nlp 方法。
我用多个不同的网站网址测试,发现有些内容的作者和发布日期无法解析,甚至有些内容获取错误,但英文内容的识别率还是很高的。如果想提高中文的识别率,可以更换报纸上使用的分词数据库(报纸目前使用的分词数据库是口吃分词),或者改变使用的内容识别模型。
可读性
可读性是一种爬虫算法。它在 python 中的名称是 readability-lxml。我们也可以通过 pip 命令安装它:
shell
pip install readability-lxml
安装完成后,我们只需要导入可读性,我们看一下例子:
python
import requests
from readability import Document
url = "https://www.ithome.com/0/444/503.htm"
html = requests.get(url).content
doc = Document(html)
print("title:", doc.title)
print("content:", doc.summary(html_partial=True))
这里我们使用requests库请求页面,然后将获取到的html内容传递给可读性的Document类,然后调用title和summary方法获取title和body。这样我们就得到了标题和正文。
summary 方法中的 html_partial 表示是否过滤掉返回结果中的 html 和 body 标签。可读性返回的正文内容很可能收录页面html元素,这需要我们进行二次过滤或提取。
可读性获取标题的方法很简单,就是直接获取页面title元素中的内容,但是获取文本的方法比较麻烦。它对每个节点进行评分。比如遇到文章元素,会加5分(源码是加5分),因为文章元素可能是正文内容,也可能是正文内容的一部分。
如果遇到 ol 元素,说明可能不是body内容,所以减去3分后,得分最高的元素很可能是body或者body内容。
当然,可读性也有使用正则表达式打分的方法,这种方法的效果和前面的方法差不多。简单来说,可读性原则是基于经验积累的模型集,分数也是基于钦佩性不断优化的结果。所以这个框架的准确率不是很高,但是可以解放一些人。
总结与风险防范
我们讲解了三种常见的智能爬虫,也以代码的形式学习了报刊和可读性的使用和原理。我们可以利用在这个文章中学到的东西来编写自己的爬虫,同时也可以理解爬虫。发展有更好的理解。
爬行动物目前处于合法的灰色地带。如果使用得当,它们将为个人/公司带来巨大的利益。否则会给个人/公司带来法律风险。所以我们在使用爬虫的时候,一定要遵守目标网站robots.txt文件中的规定,同时控制目标网站的爬取速度和频率,防止目标网站 @k17@ > 造成压力,甚至破坏数据信息。
作者简介:朱刚,笔名妙书,CSDN博客专家,.NET高级开发工程师,7年一线开发经验,参与电子政务系统和AI客服系统开发,互联网架构设计招聘网站,目前在职,从事企业级安全监控系统的开发。
【结尾】 查看全部
php curl抓取网页指定内容(一下基于DOM结构的爬虫框架怎么使用?(上))
出品 | CSDN(ID:CSDNnews)
爬虫应用很广泛,比如搜索引擎、采集数据、广告过滤、数据分析等。我们爬几个网站内容还是可以写多个爬虫,但是不可能为需要爬取多个 网站 内容的项目编写多个爬虫。这就是我们需要智能爬虫的时候。
目前智能爬虫分为三种:
1. 基于网页内容的爬虫
当一个网页收录大量需要提取的信息时,我们需要使用基于网页内容的爬虫。爬虫将 HTML 视为文本并使用 NLP 技术对其进行处理。
这种基于网页内容的爬虫虽然可以减少爬虫的数量,但需要人工参与NLP模型的训练。没有AI开发经验或者AI开发经验很少的程序员很难写出这样的爬虫,爬虫的时间都花在了爬取上。很长而且效率很低。
2. 基于DOM结构的爬虫
基于DOM结构的爬虫比较简单,就是将HTML解析成DOM树,然后根据语法结构提取信息。这种方法比以前的方法更有效、更准确。
3. 基于视觉的爬虫
基于视觉的爬虫开发难度也很大。它通过浏览器接口或浏览器内核烧录目标页面,然后根据网页的视觉规律提取网页数据。这种爬虫需要利用神经网络中的CNN卷积神经网络来获取页面特定区域的内容。
最常用的爬虫框架是 Readability 和 Newspaper。下面我们来看看这两个框架的解释。
报纸
Newspaper 是一个使用 NLP 的智能爬虫框架,可以从页面中提取大量内容。要安装这个爬虫框架,需要先安装依赖:
shell
sudo apt-get install libxml2-dev libxslt-dev
sudo apt-get install libjpeg-dev zlib1g-dev libpng12-dev
以上安装中,如果libpng12-dev出现错误,需要安装libpng-dev。
接下来,您需要安装 NLP 语料库:
shell
curl https://raw.githubusercontent. ... ra.py | python3
最后我们安装报纸爬虫框架:
shell
pip install newspaper3k
我们举个例子看看Newspaper框架是怎么使用的:
python
from newspaper import Article
url = 'https://www.ithome.com/0/445/071.htm'
article = Article(url, language='zh')
article.download
article.parse
print('作者', article.authors)
print('标题', article.title)
print('发布日期', article.publish_date)
print('正文', article.text)
article.nlp
print('关键词', article.keywords)
print('摘要', article.summary)
上面代码中的 language='zh' 告诉 Newspaper 我们正在爬取中文网页。报纸会先下载页面,然后使用parse方法解析页面。页面解析后,可以得到作者、标题、发布日期等信息。如果要提取关键词和摘要,可以使用 nlp 方法。
我用多个不同的网站网址测试,发现有些内容的作者和发布日期无法解析,甚至有些内容获取错误,但英文内容的识别率还是很高的。如果想提高中文的识别率,可以更换报纸上使用的分词数据库(报纸目前使用的分词数据库是口吃分词),或者改变使用的内容识别模型。
可读性
可读性是一种爬虫算法。它在 python 中的名称是 readability-lxml。我们也可以通过 pip 命令安装它:
shell
pip install readability-lxml
安装完成后,我们只需要导入可读性,我们看一下例子:
python
import requests
from readability import Document
url = "https://www.ithome.com/0/444/503.htm"
html = requests.get(url).content
doc = Document(html)
print("title:", doc.title)
print("content:", doc.summary(html_partial=True))
这里我们使用requests库请求页面,然后将获取到的html内容传递给可读性的Document类,然后调用title和summary方法获取title和body。这样我们就得到了标题和正文。
summary 方法中的 html_partial 表示是否过滤掉返回结果中的 html 和 body 标签。可读性返回的正文内容很可能收录页面html元素,这需要我们进行二次过滤或提取。
可读性获取标题的方法很简单,就是直接获取页面title元素中的内容,但是获取文本的方法比较麻烦。它对每个节点进行评分。比如遇到文章元素,会加5分(源码是加5分),因为文章元素可能是正文内容,也可能是正文内容的一部分。
如果遇到 ol 元素,说明可能不是body内容,所以减去3分后,得分最高的元素很可能是body或者body内容。
当然,可读性也有使用正则表达式打分的方法,这种方法的效果和前面的方法差不多。简单来说,可读性原则是基于经验积累的模型集,分数也是基于钦佩性不断优化的结果。所以这个框架的准确率不是很高,但是可以解放一些人。
总结与风险防范
我们讲解了三种常见的智能爬虫,也以代码的形式学习了报刊和可读性的使用和原理。我们可以利用在这个文章中学到的东西来编写自己的爬虫,同时也可以理解爬虫。发展有更好的理解。
爬行动物目前处于合法的灰色地带。如果使用得当,它们将为个人/公司带来巨大的利益。否则会给个人/公司带来法律风险。所以我们在使用爬虫的时候,一定要遵守目标网站robots.txt文件中的规定,同时控制目标网站的爬取速度和频率,防止目标网站 @k17@ > 造成压力,甚至破坏数据信息。
作者简介:朱刚,笔名妙书,CSDN博客专家,.NET高级开发工程师,7年一线开发经验,参与电子政务系统和AI客服系统开发,互联网架构设计招聘网站,目前在职,从事企业级安全监控系统的开发。
【结尾】
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
网站优化 • 优采云 发表了文章 • 0 个评论 • 111 次浏览 • 2022-03-24 00:08
1、fopen 的使用
复制代码代码如下:
复制代码代码如下:
// 以下代码可用于 PHP 5 及以上版本
但是上面的代码很容易出现开流失败:HTTP request failed!错误,解决方法
有人说在php.ini中有两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示使用哪个脚本访问网络,还有一个" ;" 默认在它前面。是的。)重新启动服务器。
但他们中的一些人仍然有这个警告信息。距离完美解决方案还有一步之遥。您必须在 php.ini 中设置 user_agent。php的默认user_agent是PHP,我们改成Mozilla/4.0(兼容Mozilla/4.0)。; MSIE 6.0; Windows NT 5.0) 模拟浏览器
user_agent="Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)"
工作中遇到这个问题,完美解决了,分享给大家。
2、由 curl 实现
复制代码代码如下:
linux下,可以使用以下代码下载
exec("wget {$url}");
PHP抓取外部资源函数fopen/file_get_contents/curl的区别
fopen/file_get_contents 会为每个请求重新做 DNS 查询,并且不缓存 DNS 信息。
但是 CURL 会自动缓存 DNS 信息。对同一域名下的网页或图片的请求只需要一次 DNS 查询。
这大大减少了 DNS 查询的数量。
所以 CURL 的性能比 fopen/file_get_contents 好很多。 查看全部
php curl抓取网页指定内容(PHP外部资源函数fopen/file_get_contents好很多)
1、fopen 的使用
复制代码代码如下:
复制代码代码如下:
// 以下代码可用于 PHP 5 及以上版本
但是上面的代码很容易出现开流失败:HTTP request failed!错误,解决方法
有人说在php.ini中有两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示使用哪个脚本访问网络,还有一个" ;" 默认在它前面。是的。)重新启动服务器。
但他们中的一些人仍然有这个警告信息。距离完美解决方案还有一步之遥。您必须在 php.ini 中设置 user_agent。php的默认user_agent是PHP,我们改成Mozilla/4.0(兼容Mozilla/4.0)。; MSIE 6.0; Windows NT 5.0) 模拟浏览器

user_agent="Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)"
工作中遇到这个问题,完美解决了,分享给大家。
2、由 curl 实现
复制代码代码如下:
linux下,可以使用以下代码下载
exec("wget {$url}");
PHP抓取外部资源函数fopen/file_get_contents/curl的区别
fopen/file_get_contents 会为每个请求重新做 DNS 查询,并且不缓存 DNS 信息。
但是 CURL 会自动缓存 DNS 信息。对同一域名下的网页或图片的请求只需要一次 DNS 查询。
这大大减少了 DNS 查询的数量。
所以 CURL 的性能比 fopen/file_get_contents 好很多。
php curl抓取网页指定内容(phpcurl抓取网页指定内容-学习视频教程-轻量级网络爬虫学习路线)
网站优化 • 优采云 发表了文章 • 0 个评论 • 44 次浏览 • 2022-03-22 12:58
phpcurl抓取网页指定内容-学习视频教程学习视频教程-轻量级网络爬虫学习路线-牛客网信息采集之网页json数据分析:html5数据之json获取
谈到抓取,很多人第一时间想到的就是requests等python中提供的接口方法。但我觉得,更加常用的就是利用webcookie。简单的说,就是浏览器会保存浏览器信息(用http协议保存)。webcookie其实很简单,可以用作浏览器的缓存。而且由于cookie只是一段dom树,也不存在扩展问题,对于大部分开发人员来说,这就是一段抓取历史。
从而用来实现网页抓取。基本原理,post(),get()方法,通过类似cookie的方式,将浏览器的历史信息保存下来,然后调用浏览器解析html文档的接口(由浏览器调用)或者有很多开源接口,如:threadlocal,webqueryset,websession等。总之post(),get(),document.documentelement.getelementsbytagname("script")[0].document()这三个方法,以及浏览器的设置,都可以获取浏览器历史数据。具体的方法如下:。
1、保存cookie,首先保存到https文件中:-html-cookie-targets/然后每次执行爬虫时,都调用浏览器的savecallback方法,对cookie数据进行保存。
2、获取cookie,但很多我们需要的历史数据太多,比如一个或多个page的链接的不同页面的header记录。如何获取呢?很多人一般都是通过post方法来获取。但是,很多时候我们只是需要第1页或第2页,至于其他页的数据,我们就没必要保存下来了。如果只有这样的数据,还好办。用http请求方法,我们只需要正常对着cookie的返回值读数据即可。如果需要获取后续所有数据,我们可以继续http请求。
3、对请求进行get和post方法,我们分别获取对应数据即可。基本思路如上所示。因为python协议所限,大部分功能都必须获取每一个单独的文件。而我们一般对网页的抓取,通常只抓取一个网页,比如获取page的第一页,及最后一页的最后一页中的第一页的所有页面数据。
那么,对于page指定的一个页面,
1、获取page指定的网页的全部数据页
2、只获取其中page中包含的最后一页(如果指定第一页中包含最后一页的话,
3、在所有页面中获取page页的最后一页内容第一种方法,我们在网页每个页面点击访问,查看抓取到的html内容即可获取前面页面页面的全部内容。缺点是获取数据比较慢,而且效率较低;最好带一个浏览器插件,将cookie里数据一次性导出为cookie.需要再次手动做些改动,比如修改爬取的cookie,保存cookie.第二种方法。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容-学习视频教程-轻量级网络爬虫学习路线)
phpcurl抓取网页指定内容-学习视频教程学习视频教程-轻量级网络爬虫学习路线-牛客网信息采集之网页json数据分析:html5数据之json获取
谈到抓取,很多人第一时间想到的就是requests等python中提供的接口方法。但我觉得,更加常用的就是利用webcookie。简单的说,就是浏览器会保存浏览器信息(用http协议保存)。webcookie其实很简单,可以用作浏览器的缓存。而且由于cookie只是一段dom树,也不存在扩展问题,对于大部分开发人员来说,这就是一段抓取历史。
从而用来实现网页抓取。基本原理,post(),get()方法,通过类似cookie的方式,将浏览器的历史信息保存下来,然后调用浏览器解析html文档的接口(由浏览器调用)或者有很多开源接口,如:threadlocal,webqueryset,websession等。总之post(),get(),document.documentelement.getelementsbytagname("script")[0].document()这三个方法,以及浏览器的设置,都可以获取浏览器历史数据。具体的方法如下:。
1、保存cookie,首先保存到https文件中:-html-cookie-targets/然后每次执行爬虫时,都调用浏览器的savecallback方法,对cookie数据进行保存。
2、获取cookie,但很多我们需要的历史数据太多,比如一个或多个page的链接的不同页面的header记录。如何获取呢?很多人一般都是通过post方法来获取。但是,很多时候我们只是需要第1页或第2页,至于其他页的数据,我们就没必要保存下来了。如果只有这样的数据,还好办。用http请求方法,我们只需要正常对着cookie的返回值读数据即可。如果需要获取后续所有数据,我们可以继续http请求。
3、对请求进行get和post方法,我们分别获取对应数据即可。基本思路如上所示。因为python协议所限,大部分功能都必须获取每一个单独的文件。而我们一般对网页的抓取,通常只抓取一个网页,比如获取page的第一页,及最后一页的最后一页中的第一页的所有页面数据。
那么,对于page指定的一个页面,
1、获取page指定的网页的全部数据页
2、只获取其中page中包含的最后一页(如果指定第一页中包含最后一页的话,
3、在所有页面中获取page页的最后一页内容第一种方法,我们在网页每个页面点击访问,查看抓取到的html内容即可获取前面页面页面的全部内容。缺点是获取数据比较慢,而且效率较低;最好带一个浏览器插件,将cookie里数据一次性导出为cookie.需要再次手动做些改动,比如修改爬取的cookie,保存cookie.第二种方法。
php curl抓取网页指定内容( PHP的curl()使用总结及使用的使用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 149 次浏览 • 2022-03-13 18:17
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库,可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例,与大家分享cURL的使用。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址
$url = "http://m.oschina.net/action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//登录后要获取信息的地址
$url2 = "http://m.oschina.net/my";
//模拟登录
login_post($url, $cookie, $post);
//获取登录页的信息
$content = get_content($url2, $cookie);
//删除cookie文件
@ unlink($cookie);
//匹配页面信息
$preg = "/(.*)/i";
preg_match_all($preg, $content, $arr);
$str = $arr[1][0];
//输出内容
echo $str;
运行上面的代码后,我们会看到最终得到了登录用户的头像。
使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
参考
《php中curl和curl的介绍》,作者不详,
Veda 的“使用 PHP CURL 发布数据”,
《php使用curl模拟登录discuz并模拟发帖》,作者:天心,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: 查看全部
php curl抓取网页指定内容(
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库,可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例,与大家分享cURL的使用。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址
$url = "http://m.oschina.net/action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//登录后要获取信息的地址
$url2 = "http://m.oschina.net/my";
//模拟登录
login_post($url, $cookie, $post);
//获取登录页的信息
$content = get_content($url2, $cookie);
//删除cookie文件
@ unlink($cookie);
//匹配页面信息
$preg = "/(.*)/i";
preg_match_all($preg, $content, $arr);
$str = $arr[1][0];
//输出内容
echo $str;
运行上面的代码后,我们会看到最终得到了登录用户的头像。

使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
参考
《php中curl和curl的介绍》,作者不详,
Veda 的“使用 PHP CURL 发布数据”,
《php使用curl模拟登录discuz并模拟发帖》,作者:天心,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接:
php curl抓取网页指定内容( PHP的curl()使用总结及使用的使用)
网站优化 • 优采云 发表了文章 • 0 个评论 • 49 次浏览 • 2022-03-10 14:14
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库,可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例,与大家分享cURL的使用。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址
$url = "http://m.oschina.net/action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//登录后要获取信息的地址
$url2 = "http://m.oschina.net/my";
//模拟登录
login_post($url, $cookie, $post);
//获取登录页的信息
$content = get_content($url2, $cookie);
//删除cookie文件
@ unlink($cookie);
//匹配页面信息
$preg = "/(.*)/i";
preg_match_all($preg, $content, $arr);
$str = $arr[1][0];
//输出内容
echo $str;
运行上面的代码后,我们会看到最终得到了登录用户的头像。
使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
参考
《php中curl和curl的介绍》,作者不详,
Veda 的“使用 PHP CURL 发布数据”,
《php使用curl模拟登录discuz并模拟发帖》,作者:天心,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接: 查看全部
php curl抓取网页指定内容(
PHP的curl()使用总结及使用的使用)
PHP模拟登录并获取数据
CURL 是一个强大的 PHP 库。使用PHP的cURL库,可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例,与大家分享cURL的使用。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址
$url = "http://m.oschina.net/action/user/login";
//设置cookie保存路径
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//登录后要获取信息的地址
$url2 = "http://m.oschina.net/my";
//模拟登录
login_post($url, $cookie, $post);
//获取登录页的信息
$content = get_content($url2, $cookie);
//删除cookie文件
@ unlink($cookie);
//匹配页面信息
$preg = "/(.*)/i";
preg_match_all($preg, $content, $arr);
$str = $arr[1][0];
//输出内容
echo $str;
运行上面的代码后,我们会看到最终得到了登录用户的头像。

使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
参考
《php中curl和curl的介绍》,作者不详,
Veda 的“使用 PHP CURL 发布数据”,
《php使用curl模拟登录discuz并模拟发帖》,作者:天心,
免责声明:本文为原创文章,版权归作者所有。如需转载,请注明出处并保留原文链接:
php curl抓取网页指定内容(curldemo,learn|curl抓取网页指定内容的curl命令提示符)
网站优化 • 优采云 发表了文章 • 0 个评论 • 42 次浏览 • 2022-03-10 00:04
phpcurl抓取网页指定内容,为了不丢失原始网页内容,将每次抓取到的内容整理成文本传给服务器的redis,curl从redis服务端同步抓取到的结果,当redis服务端成功同步抓取到的结果后,本地curl命令提示符就可以用::|:分隔了。建议curl提供好接收redis文本的json序列化接口,可以降低后续安装与维护成本。
curldemo,learn|curl,learn!
这样的文档有的是。可以去看看。
通过phpcurl操作redis中数据格式
我说下我的看法吧。curl命令直接连接redis服务器,然后获取数据格式。通过json数据结构存储数据。但如果要传递大文件,建议用专门的工具/客户端。
mysql中的json格式的传输,包括xml、csv等等格式。
可以用phpcurl来连接redis,然后获取数据格式。
curl连接laravel服务器,对于curl命令行参数,楼上有人已经列举很全了,我补充下,php将json中的java=this()转化为php=this()。这里其实是用redis对象做中间层,对象=json对象,可以看我的专栏博客,深入剖析redis中的请求调用、权限操作、分布式部署、故障处理等。
curl命令可以把数据打包成一个json格式,
phpcurl可以连接到mysql,传递json格式到curl。 查看全部
php curl抓取网页指定内容(curldemo,learn|curl抓取网页指定内容的curl命令提示符)
phpcurl抓取网页指定内容,为了不丢失原始网页内容,将每次抓取到的内容整理成文本传给服务器的redis,curl从redis服务端同步抓取到的结果,当redis服务端成功同步抓取到的结果后,本地curl命令提示符就可以用::|:分隔了。建议curl提供好接收redis文本的json序列化接口,可以降低后续安装与维护成本。
curldemo,learn|curl,learn!
这样的文档有的是。可以去看看。
通过phpcurl操作redis中数据格式
我说下我的看法吧。curl命令直接连接redis服务器,然后获取数据格式。通过json数据结构存储数据。但如果要传递大文件,建议用专门的工具/客户端。
mysql中的json格式的传输,包括xml、csv等等格式。
可以用phpcurl来连接redis,然后获取数据格式。
curl连接laravel服务器,对于curl命令行参数,楼上有人已经列举很全了,我补充下,php将json中的java=this()转化为php=this()。这里其实是用redis对象做中间层,对象=json对象,可以看我的专栏博客,深入剖析redis中的请求调用、权限操作、分布式部署、故障处理等。
curl命令可以把数据打包成一个json格式,
phpcurl可以连接到mysql,传递json格式到curl。
php curl抓取网页指定内容(phpcurl抓取网页()()抓取(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2022-02-27 18:01
phpcurl抓取网页指定内容:baidu&hao123&sina&ucjavapostman:把你的网页以json格式格式发给他flash:flash网页中出现插件对象的元素,他会自动拿到转换tomcat+php-curl:这是flash网页直接分析tomcat的json格式的工具函数javapostman:把json格式转换为php类名,他会自动拿到转换至tomcat:找到java函数名,which写入到root目录下curl-u:8080-h:9000-m:44442-v:22-json:java-convert:php-bomauthenticate(encrypt加密):验证加密算法,ssl2。
(加密安全,php-auth是php-rsa加密,php-crypto是php-rsa-ev加密java-ffip):php-ffip代理,java-ffip代理。
javapostman、springframeworkflash都是postmessage传递参数,
一般使用.netcookie和dom,jsp毕竟是java的程序。
你不应该问javapostman,应该是问问java的controller传递参数有什么坑。
为什么问这个问题?postmessage传递参数的步骤:if("参数".equals(参数)){//这个参数不是变量!!!(如accept)#}else{//这个参数不是变量!!!(如type)#}#[注意!!!这个类型是eloquentglobalsharing,controller没办法获取更高的权限#注意!!!这个会编译错误,详见classcontroller{publicstaticvoidmain(string[]args){//controller代码块string[]args=(string)itemcontext.findparameters("item");//eloquentglobalsharement,根据item的type('text','plain','charset'),把这个字符串传参数到singleton中,然后postmessagetooutput函数写入数据库中。
string[]data=itemcontext.getcomponentnames("andorin");//sqlsessionsql[]sql=itemcontext.getcomponentnames("transaction");system.out.println("item:%s:%s:%s:%s:%s:%s",itemcontext.fromcontext(args[1]),args[0],args[1],args[2],args[0],args[1],args[2]);}}。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页()()抓取(图))
phpcurl抓取网页指定内容:baidu&hao123&sina&ucjavapostman:把你的网页以json格式格式发给他flash:flash网页中出现插件对象的元素,他会自动拿到转换tomcat+php-curl:这是flash网页直接分析tomcat的json格式的工具函数javapostman:把json格式转换为php类名,他会自动拿到转换至tomcat:找到java函数名,which写入到root目录下curl-u:8080-h:9000-m:44442-v:22-json:java-convert:php-bomauthenticate(encrypt加密):验证加密算法,ssl2。
(加密安全,php-auth是php-rsa加密,php-crypto是php-rsa-ev加密java-ffip):php-ffip代理,java-ffip代理。
javapostman、springframeworkflash都是postmessage传递参数,
一般使用.netcookie和dom,jsp毕竟是java的程序。
你不应该问javapostman,应该是问问java的controller传递参数有什么坑。
为什么问这个问题?postmessage传递参数的步骤:if("参数".equals(参数)){//这个参数不是变量!!!(如accept)#}else{//这个参数不是变量!!!(如type)#}#[注意!!!这个类型是eloquentglobalsharing,controller没办法获取更高的权限#注意!!!这个会编译错误,详见classcontroller{publicstaticvoidmain(string[]args){//controller代码块string[]args=(string)itemcontext.findparameters("item");//eloquentglobalsharement,根据item的type('text','plain','charset'),把这个字符串传参数到singleton中,然后postmessagetooutput函数写入数据库中。
string[]data=itemcontext.getcomponentnames("andorin");//sqlsessionsql[]sql=itemcontext.getcomponentnames("transaction");system.out.println("item:%s:%s:%s:%s:%s:%s",itemcontext.fromcontext(args[1]),args[0],args[1],args[2],args[0],args[1],args[2]);}}。
php curl抓取网页指定内容(我用php抓取数据的抓取方法抓的话的错误Youareauthorized)
网站优化 • 优采云 发表了文章 • 0 个评论 • 78 次浏览 • 2022-02-26 16:08
我用的是php,curl主要是抓取数据,当然我们也可以用其他的方法抓取,比如fsockopen,file_get_contents等等。但它只能抓取那些可以直接访问的页面。如果要抓取有页面访问控制的页面,或者登录后的页面,就比较难了。
1.无访问控制抓取文件
2.使用代理进行爬取
为什么要使用代理进行抓取?以谷歌为例。如果你抓取谷歌的数据,并且在短时间内非常频繁地抓取它,你将无法抓取它。谷歌此时限制了你的ip地址,你可以换个代理重新抓取。
3.post数据后,抓取数据
数据提交数据单独说一下,因为在使用curl的时候,很多情况下都会有数据交互,所以比较重要。
在upload.php 文件中,print_r($_POST); 使用 curl 捕获 upload.php 输出的内容数组( [name] => test [sex] => 1 [birth] => 20101010 )
4.爬取一些带有页面访问控制的页面
之前写过一篇文章,对页面访问控制的3种方法感兴趣的可以看看。
如果使用上面提到的方法进行捕获,会报如下错误
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 WWW-Authenticate 标头字段。
这时候,我们将使用 CURLOPT_USERPWD 来验证
以上5个常用php curl的经典例子,都是小编分享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。 查看全部
php curl抓取网页指定内容(我用php抓取数据的抓取方法抓的话的错误Youareauthorized)
我用的是php,curl主要是抓取数据,当然我们也可以用其他的方法抓取,比如fsockopen,file_get_contents等等。但它只能抓取那些可以直接访问的页面。如果要抓取有页面访问控制的页面,或者登录后的页面,就比较难了。
1.无访问控制抓取文件
2.使用代理进行爬取
为什么要使用代理进行抓取?以谷歌为例。如果你抓取谷歌的数据,并且在短时间内非常频繁地抓取它,你将无法抓取它。谷歌此时限制了你的ip地址,你可以换个代理重新抓取。
3.post数据后,抓取数据
数据提交数据单独说一下,因为在使用curl的时候,很多情况下都会有数据交互,所以比较重要。
在upload.php 文件中,print_r($_POST); 使用 curl 捕获 upload.php 输出的内容数组( [name] => test [sex] => 1 [birth] => 20101010 )
4.爬取一些带有页面访问控制的页面
之前写过一篇文章,对页面访问控制的3种方法感兴趣的可以看看。
如果使用上面提到的方法进行捕获,会报如下错误
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 WWW-Authenticate 标头字段。
这时候,我们将使用 CURLOPT_USERPWD 来验证
以上5个常用php curl的经典例子,都是小编分享的内容。希望能给大家一个参考,也希望大家多多支持脚本之家。
php curl抓取网页指定内容( PHP中使用curl的步骤、一个简单的curl代码实例)
网站优化 • 优采云 发表了文章 • 0 个评论 • 119 次浏览 • 2022-02-20 15:00
PHP中使用curl的步骤、一个简单的curl代码实例)
本文章主要介绍PHP中使用curl的入门教程。本文讲解了curl的概述、curl的安装、PHP中curl的使用步骤、curl代码的简单示例等,有需要的朋友可以参考以下
安装卷曲
关于curl的安装,这里就不过多介绍了。windows和linux都是同一个进程,根据平台选择对应的安装方式,然后在php.ini文件中启用curl扩展,和其他扩展的安装一样。
在 PHP 中使用 curl 的步骤
在PHP中可以使用curl来完成各种功能,比如爬取网页、上传/下载文件、模拟登录等等。但是这些功能的实现都是基于四个步骤,所以curl的使用并不复杂。
在使用 curl 时,主要分为以下四个步骤:
1.初始化一个 curl 实例——curl_init()
2.curl执行时设置相关选项——curl_setopt()
3.执行 curl 查询 - curl_exec()
4.关闭 curl—curl_close()
四个步骤中,1、3、4 个步骤都很简单。最麻烦的一步是2步。此步骤设置 curl 的选项。有超过 100 种不同的选择。要完成不同的功能,必须将这些选项组合起来。
这四个步骤描述如下:
1.初始化一个curl实例,这一步使用函数curl_init(),查看PHP手册,可以看到该函数的返回值是一个资源类型,我们需要使用一个变量来保存这个实例,因为此示例将在以下步骤中使用。具体代码示例:
$curl=curl_init(); //输出资源(2, curl)
2. 要设置 curl 相关选项,请使用函数 curl_setopt() 设置 curl 选项。这个函数接受三个参数:第一个参数是要设置的curl的实例,也就是第一步中的实例,第二个参数中要设置的选项是一个预定义的常量,还有哪些选项,可以查看它在手册中。第三个参数是要设置的选项的具体值。
代码示例:
curl_setopt ($curl, CURLOPT_URL, "");
3.执行curl查询,这一步使用函数curl_exec()。该函数接受一个参数,也就是第一步得到的实例。
代码示例:
curl_exec ($curl);
4.关闭当前的curl,这一步使用函数curl_close()。该函数还接受步骤 1 中获得的 curl 实例作为参数。
代码示例:
curl_close($curl);
PHP中curl的使用一般遵循这四个步骤,其中不同的功能主要是通过两步的不同设置来完成的,所以第二步是最麻烦的,有的甚至需要大家仔细理解。
一个简单的 curl 代码示例
已经为大家介绍了使用 curl 的四个步骤。下面是一个抓取网页内容示例的简要演示。代码很简单,但希望能帮助你更好地理解curl。 查看全部
php curl抓取网页指定内容(
PHP中使用curl的步骤、一个简单的curl代码实例)

本文章主要介绍PHP中使用curl的入门教程。本文讲解了curl的概述、curl的安装、PHP中curl的使用步骤、curl代码的简单示例等,有需要的朋友可以参考以下
安装卷曲
关于curl的安装,这里就不过多介绍了。windows和linux都是同一个进程,根据平台选择对应的安装方式,然后在php.ini文件中启用curl扩展,和其他扩展的安装一样。
在 PHP 中使用 curl 的步骤
在PHP中可以使用curl来完成各种功能,比如爬取网页、上传/下载文件、模拟登录等等。但是这些功能的实现都是基于四个步骤,所以curl的使用并不复杂。
在使用 curl 时,主要分为以下四个步骤:
1.初始化一个 curl 实例——curl_init()
2.curl执行时设置相关选项——curl_setopt()
3.执行 curl 查询 - curl_exec()
4.关闭 curl—curl_close()
四个步骤中,1、3、4 个步骤都很简单。最麻烦的一步是2步。此步骤设置 curl 的选项。有超过 100 种不同的选择。要完成不同的功能,必须将这些选项组合起来。
这四个步骤描述如下:
1.初始化一个curl实例,这一步使用函数curl_init(),查看PHP手册,可以看到该函数的返回值是一个资源类型,我们需要使用一个变量来保存这个实例,因为此示例将在以下步骤中使用。具体代码示例:
$curl=curl_init(); //输出资源(2, curl)
2. 要设置 curl 相关选项,请使用函数 curl_setopt() 设置 curl 选项。这个函数接受三个参数:第一个参数是要设置的curl的实例,也就是第一步中的实例,第二个参数中要设置的选项是一个预定义的常量,还有哪些选项,可以查看它在手册中。第三个参数是要设置的选项的具体值。
代码示例:
curl_setopt ($curl, CURLOPT_URL, "");
3.执行curl查询,这一步使用函数curl_exec()。该函数接受一个参数,也就是第一步得到的实例。
代码示例:
curl_exec ($curl);
4.关闭当前的curl,这一步使用函数curl_close()。该函数还接受步骤 1 中获得的 curl 实例作为参数。
代码示例:
curl_close($curl);
PHP中curl的使用一般遵循这四个步骤,其中不同的功能主要是通过两步的不同设置来完成的,所以第二步是最麻烦的,有的甚至需要大家仔细理解。
一个简单的 curl 代码示例
已经为大家介绍了使用 curl 的四个步骤。下面是一个抓取网页内容示例的简要演示。代码很简单,但希望能帮助你更好地理解curl。
php curl抓取网页指定内容(curl利用URL规则在命令行下工做的文件传输工具(图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 105 次浏览 • 2022-02-19 20:18
)
curl 命令是一个文件传输工具,它使用 URL 规则从命令行工作。它支持文件上传和下载,是一个综合性的传输工具,但按照传统,curl被称为下载工具。curl作为一个强大的工具,支持多种协议,包括HTTP、HTTPS、ftp等。它还支持POST、cookies、身份验证、从指定偏移量下载部分文件、用户代理字符串、速度限制、文件大小、进度条等。特征。对于自动化网页处理和数据检索,curl 可以提供帮助。php
下载单个文件,默认打印输出到标准输出(STDOUT)html
curl http://www.centos.org
通过 -o/-O 选项将下载的文件保存到指定文件:
-o:将文件另存为文件名,文件名在命令行中指定
-O:使用URL中的默认文件名将文件保存到本地git
1 # 将文件下载到本地并命名为mygettext.html
2 curl -o mygettext.html http://www.gnu.org/software/ge ... .html
3
4 # 将文件保存到本地并命名为gettext.html
5 curl -O http://www.gnu.org/software/ge ... .html
也可以使用转向字符“>”将输出转为输出github
同时获取多个文件 centos
1 curl -O URL1 -O URL2
当同时从同一个站点下载多个文件时,curl 会尝试重用连接。api
通过 -L 选项重定向
默认情况下,CURL 不发送 HTTP Location 标头(重定向)。当请求的页面移动到另一个站点时,HTTP Loaction 标头作为请求发送,然后请求被重定向到新地址。
例如:访问时,地址会自动重定向到.hk。重击
1 curl http://www.google.com
2
3
4
5 302 Moved
6
7
8 302 Moved
9 The document has moved
10 <A HREF="http://www.google.com.hk/url%3 ... t%3B.
11
12
上面的输出显示请求的存档已移至。服务器
可以使用 -L 选项强制重定向 cookie
1 # 让curl使用地址重定向,此时会查询google.com.hk站点
2 curl -L http://www.google.com
恢复网络
通过使用 -C 选项,您可以对大文件使用可恢复上传功能,例如:
1 # 当文件在下载完成以前结束该进程
2 $ curl -O http://www.gnu.org/software/ge ... .html
3 ############## 20.1%
4
5 # 经过添加-C选项继续对该文件进行下载,已经下载过的文件不会被从新下载
6 curl -C - -O http://www.gnu.org/software/ge ... .html
7 ############### 21.1%
使用 CURL 进行网络限速
通过 --limit-rate 选项限制 CURL 的最大网络使用量
1 # 下载速度最大不会超过1000B/second
2
3 curl --limit-rate 1000B -O http://www.gnu.org/software/ge ... .html
下载指定时间内修改过的文件
下载文件时,可以判断文件的最后修改日期。如果文件在指定日期内被修改过,则下载,否则不下载。
此功能可以通过使用 -z 选项来实现:
1 # 若yy.html文件在2011/12/21以后有过更新才会进行下载
2 curl -z 21-Dec-11 http://www.example.com/yy.html
卷曲授权
访问需要授权的页面时,可以通过 -u 选项提供用户名和密码进行授权
1 curl -u username:password URL
2
3 # 一般的作法是在命令行只输入用户名,以后会提示输入密码,这样能够保证在查看历史记录时不会将密码泄露
4 curl -u username URL
从 FTP 服务器下载文件
CURL 还支持 FTP 下载。如果在 url 中指定了文件路径,而不是指定要下载的特定文件名,则 CURL 将列出目录中的所有文件名,而不是下载目录中的所有文件。文档
1 # 列出public_html下的全部文件夹和文件
2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
3
4 # 下载xss.php文件
5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
上传文件到 FTP 服务器
-T选项后,可以将指定的本地文件上传到FTP服务器
# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
获取更多信息
使用 -v 和 -trace 获取更多连接信息
通过字典查询单词
1 # 查询bash单词的含义
2 curl dict://dict.org/d:bash
3
4 # 列出全部可用词典
5 curl dict://dict.org/show:db
6
7 # 在foldoc词典中查询bash单词的含义
8 curl dict://dict.org/d:bash:foldoc
为 CURL 设置代理
-x 选项将代理功能添加到 CURL
1 # 指定代理主机和端口
2 curl -x proxysever.test.com:3128 http://google.co.in
剩下的网站整理
网站cookie 信息的存储和使用
1 # 将网站的cookies信息保存到sugarcookies文件中
2 curl -D sugarcookies http://localhost/sugarcrm/index.php
3
4 # 使用上次保存的cookie信息
5 curl -b sugarcookies http://localhost/sugarcrm/index.php
传递请求数据
curl 默认使用 GET 方法请求数据,这种方式直接通过 URL 传递数据
可以通过 --data/-d 方法指定使用 POST 方法来传递数据
1 # GET
2 curl -u username https://api.github.com/user%3F ... XXXXX
3
4 # POST
5 curl -u username --data "param1=value1¶m2=value" https://api.github.com
6
7 # 也能够指定一个文件,将该文件中的内容看成数据传递给服务器端
8 curl --data @filename https://github.api.com/authorizations
注意:默认情况下,如果通过 POST 传递的数据中存在特殊字符,则必须先将特殊字符转义到服务器。如果值收录空格,则必须先将空格转换为 %20。如:
1 curl -d "value%201" http://hostname.com
在新版本的 CURL 中,提供了一个新的选项 --data-urlencode,该选项提供的参数会自动转义特殊字符。
1 curl --data-urlencode "value 1" http://hostname.com
除了使用 GET 和 POST 协议外,还可以通过 -X 选项指定其他协议,例如:
1 curl -I -X DELETE https://api.github.cim
上传文件
1 curl --form "fileupload=@filename.txt" http://hostname/resource 查看全部
php curl抓取网页指定内容(curl利用URL规则在命令行下工做的文件传输工具(图)
)
curl 命令是一个文件传输工具,它使用 URL 规则从命令行工作。它支持文件上传和下载,是一个综合性的传输工具,但按照传统,curl被称为下载工具。curl作为一个强大的工具,支持多种协议,包括HTTP、HTTPS、ftp等。它还支持POST、cookies、身份验证、从指定偏移量下载部分文件、用户代理字符串、速度限制、文件大小、进度条等。特征。对于自动化网页处理和数据检索,curl 可以提供帮助。php
下载单个文件,默认打印输出到标准输出(STDOUT)html
curl http://www.centos.org
通过 -o/-O 选项将下载的文件保存到指定文件:
-o:将文件另存为文件名,文件名在命令行中指定
-O:使用URL中的默认文件名将文件保存到本地git
1 # 将文件下载到本地并命名为mygettext.html
2 curl -o mygettext.html http://www.gnu.org/software/ge ... .html
3
4 # 将文件保存到本地并命名为gettext.html
5 curl -O http://www.gnu.org/software/ge ... .html
也可以使用转向字符“>”将输出转为输出github
同时获取多个文件 centos
1 curl -O URL1 -O URL2
当同时从同一个站点下载多个文件时,curl 会尝试重用连接。api
通过 -L 选项重定向
默认情况下,CURL 不发送 HTTP Location 标头(重定向)。当请求的页面移动到另一个站点时,HTTP Loaction 标头作为请求发送,然后请求被重定向到新地址。
例如:访问时,地址会自动重定向到.hk。重击

1 curl http://www.google.com
2
3
4
5 302 Moved
6
7
8 302 Moved
9 The document has moved
10 <A HREF="http://www.google.com.hk/url%3 ... t%3B.
11
12

上面的输出显示请求的存档已移至。服务器
可以使用 -L 选项强制重定向 cookie
1 # 让curl使用地址重定向,此时会查询google.com.hk站点
2 curl -L http://www.google.com
恢复网络
通过使用 -C 选项,您可以对大文件使用可恢复上传功能,例如:

1 # 当文件在下载完成以前结束该进程
2 $ curl -O http://www.gnu.org/software/ge ... .html
3 ############## 20.1%
4
5 # 经过添加-C选项继续对该文件进行下载,已经下载过的文件不会被从新下载
6 curl -C - -O http://www.gnu.org/software/ge ... .html
7 ############### 21.1%

使用 CURL 进行网络限速
通过 --limit-rate 选项限制 CURL 的最大网络使用量
1 # 下载速度最大不会超过1000B/second
2
3 curl --limit-rate 1000B -O http://www.gnu.org/software/ge ... .html
下载指定时间内修改过的文件
下载文件时,可以判断文件的最后修改日期。如果文件在指定日期内被修改过,则下载,否则不下载。
此功能可以通过使用 -z 选项来实现:
1 # 若yy.html文件在2011/12/21以后有过更新才会进行下载
2 curl -z 21-Dec-11 http://www.example.com/yy.html
卷曲授权
访问需要授权的页面时,可以通过 -u 选项提供用户名和密码进行授权
1 curl -u username:password URL
2
3 # 一般的作法是在命令行只输入用户名,以后会提示输入密码,这样能够保证在查看历史记录时不会将密码泄露
4 curl -u username URL
从 FTP 服务器下载文件
CURL 还支持 FTP 下载。如果在 url 中指定了文件路径,而不是指定要下载的特定文件名,则 CURL 将列出目录中的所有文件名,而不是下载目录中的所有文件。文档
1 # 列出public_html下的全部文件夹和文件
2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
3
4 # 下载xss.php文件
5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
上传文件到 FTP 服务器
-T选项后,可以将指定的本地文件上传到FTP服务器

# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

获取更多信息
使用 -v 和 -trace 获取更多连接信息
通过字典查询单词

1 # 查询bash单词的含义
2 curl dict://dict.org/d:bash
3
4 # 列出全部可用词典
5 curl dict://dict.org/show:db
6
7 # 在foldoc词典中查询bash单词的含义
8 curl dict://dict.org/d:bash:foldoc

为 CURL 设置代理
-x 选项将代理功能添加到 CURL
1 # 指定代理主机和端口
2 curl -x proxysever.test.com:3128 http://google.co.in
剩下的网站整理
网站cookie 信息的存储和使用
1 # 将网站的cookies信息保存到sugarcookies文件中
2 curl -D sugarcookies http://localhost/sugarcrm/index.php
3
4 # 使用上次保存的cookie信息
5 curl -b sugarcookies http://localhost/sugarcrm/index.php
传递请求数据
curl 默认使用 GET 方法请求数据,这种方式直接通过 URL 传递数据
可以通过 --data/-d 方法指定使用 POST 方法来传递数据

1 # GET
2 curl -u username https://api.github.com/user%3F ... XXXXX
3
4 # POST
5 curl -u username --data "param1=value1¶m2=value" https://api.github.com
6
7 # 也能够指定一个文件,将该文件中的内容看成数据传递给服务器端
8 curl --data @filename https://github.api.com/authorizations

注意:默认情况下,如果通过 POST 传递的数据中存在特殊字符,则必须先将特殊字符转义到服务器。如果值收录空格,则必须先将空格转换为 %20。如:
1 curl -d "value%201" http://hostname.com
在新版本的 CURL 中,提供了一个新的选项 --data-urlencode,该选项提供的参数会自动转义特殊字符。
1 curl --data-urlencode "value 1" http://hostname.com
除了使用 GET 和 POST 协议外,还可以通过 -X 选项指定其他协议,例如:
1 curl -I -X DELETE https://api.github.cim
上传文件
1 curl --form "fileupload=@filename.txt" http://hostname/resource
php curl抓取网页指定内容(mancurl常用参数curl命令参数介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-02-10 19:13
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
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.part1content/uploads/2010/09/compare_varnish.jpg
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 105 0 --:--:-- --:--:-- --:--:-- 0
[root@xi mytest]# curl -r 100-200 -o img.part2ontent/uploads/2010/09/compare_varnish.jpg
% 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.part3content/uploads/2010/09/compare_varnish.jpg
% 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。 查看全部
php curl抓取网页指定内容(mancurl常用参数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
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.part1content/uploads/2010/09/compare_varnish.jpg
% Total % Received % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费的左速度
100 101 100 101 0 0 105 0 --:--:-- --:--:-- --:--:-- 0
[root@xi mytest]# curl -r 100-200 -o img.part2ontent/uploads/2010/09/compare_varnish.jpg
% 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.part3content/uploads/2010/09/compare_varnish.jpg
% 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。
php curl抓取网页指定内容(中国博客联盟第一次成员站点存活检测的结果是什么?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 48 次浏览 • 2022-02-09 20:25
在建中国博客联盟之初,有博主提醒我,URL大全等网站维护非常麻烦,调试一些已经死掉的网站需要耗费很大的精力,甚至以松哥的博客为例。当然,我也这么认为。前段时间看了梦轩立人boke123网站的维修记录,貌似是纯人工检查。张歌真的很佩服这五具尸体,他也太有毅力了。
现在博客联盟收录也有超过200个博客,全部来自自投。无论你是草博还是名博,张哥都不会强买强卖。由于大多是刚成立半年的新站点,大概还有一些半途而废、提前太监的博客,所以我决定开始做站点维护工作。
早上用PHP做了一个,放到京东云上试用了一下。发现检测速度一般,等了很久(我写的php太蹩脚了,就不丑了)。
随后在VPS上写了一个多线程的网站状态检测脚本,直接从数据库中加载站点地址,然后用curl检测返回码,发现速度非常好,而且1分钟内基本出结果。
这是脚本代码:
ps:关于,后续文章会有详细说明,本文篇幅有限,不再多说。
以下是中国博客联盟第一次会员网站生存测试的结果:
①。返回码非 200 的异常站点:
②、脚本爬取的无法访问的站点:
手动访问过滤结果:
(王映雪博客):无法访问,确认在记录中√
(长江博客):无障碍√
(麦兜科技博客):无法访问 ×
(教师日记):无障碍√
(三秒兔):无法访问 ×
(小蚂蚁博客):无障碍√
(李文东博客):可以访问√
ps:脚本检测机制是:如果8s内没有连接,则判断异常,重试3次,输出最终结果。如果3次都异常,就是000。从图中和人工筛选可以看出,有些误杀,这和8s的设置有一定的关系。您可以考虑将其设置为更长的时间以获得更准确的结果。当然,最终还是会结合人工确认,所以也无所谓。
后续,中国博客联盟将制定一个检查周期,最短一周一次,最长一个月一次,让每个展示的站点都能正常访问。当然,我也会在中国博客联盟的站长信息栏目中公布每次检查的结果,以方便各位会员。
由于中国博客联盟目前部署在京东云清,无法远程控制数据库,只能暂时使用半自动模式。以后有时间迁移到阿里云等VPS的时候,脚本会改成全自动状态。当检测到网站 联系人多次断开连接时,将其临时设置为隐藏状态。 查看全部
php curl抓取网页指定内容(中国博客联盟第一次成员站点存活检测的结果是什么?)
在建中国博客联盟之初,有博主提醒我,URL大全等网站维护非常麻烦,调试一些已经死掉的网站需要耗费很大的精力,甚至以松哥的博客为例。当然,我也这么认为。前段时间看了梦轩立人boke123网站的维修记录,貌似是纯人工检查。张歌真的很佩服这五具尸体,他也太有毅力了。
现在博客联盟收录也有超过200个博客,全部来自自投。无论你是草博还是名博,张哥都不会强买强卖。由于大多是刚成立半年的新站点,大概还有一些半途而废、提前太监的博客,所以我决定开始做站点维护工作。
早上用PHP做了一个,放到京东云上试用了一下。发现检测速度一般,等了很久(我写的php太蹩脚了,就不丑了)。
随后在VPS上写了一个多线程的网站状态检测脚本,直接从数据库中加载站点地址,然后用curl检测返回码,发现速度非常好,而且1分钟内基本出结果。
这是脚本代码:
ps:关于,后续文章会有详细说明,本文篇幅有限,不再多说。
以下是中国博客联盟第一次会员网站生存测试的结果:
①。返回码非 200 的异常站点:
②、脚本爬取的无法访问的站点:
手动访问过滤结果:
(王映雪博客):无法访问,确认在记录中√
(长江博客):无障碍√
(麦兜科技博客):无法访问 ×
(教师日记):无障碍√
(三秒兔):无法访问 ×
(小蚂蚁博客):无障碍√
(李文东博客):可以访问√
ps:脚本检测机制是:如果8s内没有连接,则判断异常,重试3次,输出最终结果。如果3次都异常,就是000。从图中和人工筛选可以看出,有些误杀,这和8s的设置有一定的关系。您可以考虑将其设置为更长的时间以获得更准确的结果。当然,最终还是会结合人工确认,所以也无所谓。
后续,中国博客联盟将制定一个检查周期,最短一周一次,最长一个月一次,让每个展示的站点都能正常访问。当然,我也会在中国博客联盟的站长信息栏目中公布每次检查的结果,以方便各位会员。
由于中国博客联盟目前部署在京东云清,无法远程控制数据库,只能暂时使用半自动模式。以后有时间迁移到阿里云等VPS的时候,脚本会改成全自动状态。当检测到网站 联系人多次断开连接时,将其临时设置为隐藏状态。
php curl抓取网页指定内容(PHP自带的http_build_query()使用总结)
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2022-02-06 18:12
本篇文章将向大家介绍如何使用curl获取php中的数据。内容非常详细。有兴趣的朋友可以参考一下。我希望它可以对大家有所帮助。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
这里分享了如何使用curl获取php中的数据。希望以上内容能对你有所帮助,让你学习到更多的知识。如果你觉得文章不错,可以分享给更多人看到。 查看全部
php curl抓取网页指定内容(PHP自带的http_build_query()使用总结)
本篇文章将向大家介绍如何使用curl获取php中的数据。内容非常详细。有兴趣的朋友可以参考一下。我希望它可以对大家有所帮助。
PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
代码实战
我们先看登录部分的代码:
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
接下来,如果登录成功,我们需要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
使用总结
1、初始化卷曲;
2、使用 curl_setopt 设置目标 url 等选项;
3、curl_exec,执行curl;
4、 执行后关闭curl;
5、输出数据。
这里分享了如何使用curl获取php中的数据。希望以上内容能对你有所帮助,让你学习到更多的知识。如果你觉得文章不错,可以分享给更多人看到。
php curl抓取网页指定内容( PHP通过正则表达式判断内容中的远程图片的资料请关注脚本之家)
网站优化 • 优采云 发表了文章 • 0 个评论 • 36 次浏览 • 2022-02-06 10:18
PHP通过正则表达式判断内容中的远程图片的资料请关注脚本之家)
php中通过正则表达式下载内容中远程图片的函数代码
更新时间:2012年1月10日12:01:30 投稿:mdxy-dxy
下午抽空写了个程序,用PHP正则表达式判断内容中的图片,下载并保存不在本域名下的图片
这个程序实际上是“小偷程序”的重要组成部分。这部分程序只是下载远程图片的部分。程序比较简单,大部分部分都有注释。
if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)){
$i=0; //多个文件++
while(list($key ,$v) = each($aliurl[0])){
//echo $v."<br />";
$filetype = pathinfo($v, PATHINFO_EXTENSION); //获取后缀名
$ff = @file_get_contents($v); //获取2进制文件内容
if(!stripos($v,"jb51.net")){//判断是否是自己网站下的图片
if (!empty($ff)){ //获取到文件就执行下面的操作
$dir = "upload/".date("Ymd")."/";//指定新的存储路径
if (!file_exists($dir)){//判断目录是否存在
@mkdir($dir,511,true); //创建多级目录,511转换成十进制是777具有可执行权限
}
$nfn = $dir.date("Ymdhis").$i.".".$filetype; //构建文件的新名字
$nf = @fopen($nfn,"w"); //创建文件
fwrite($nf,$ff); //写入文件
fclose($nf); //关闭文件
$i++; //多文件++
echo "";
$content = str_replace($v,$nfn, $content);//替换content中的参数
}else{//获取不到图片则替换为默认图片
$content = str_replace($v,"/upload/201204/20120417213810742.gif", $content);//替换content中的参数
}
}
}
}
PHP通过正则表达式下载图片到本地实现代码
请参阅下面的示例
<p>
function get_pic_url($content){
$pattern="/ 查看全部
php curl抓取网页指定内容(
PHP通过正则表达式判断内容中的远程图片的资料请关注脚本之家)
php中通过正则表达式下载内容中远程图片的函数代码
更新时间:2012年1月10日12:01:30 投稿:mdxy-dxy
下午抽空写了个程序,用PHP正则表达式判断内容中的图片,下载并保存不在本域名下的图片
这个程序实际上是“小偷程序”的重要组成部分。这部分程序只是下载远程图片的部分。程序比较简单,大部分部分都有注释。
if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)){
$i=0; //多个文件++
while(list($key ,$v) = each($aliurl[0])){
//echo $v."<br />";
$filetype = pathinfo($v, PATHINFO_EXTENSION); //获取后缀名
$ff = @file_get_contents($v); //获取2进制文件内容
if(!stripos($v,"jb51.net")){//判断是否是自己网站下的图片
if (!empty($ff)){ //获取到文件就执行下面的操作
$dir = "upload/".date("Ymd")."/";//指定新的存储路径
if (!file_exists($dir)){//判断目录是否存在
@mkdir($dir,511,true); //创建多级目录,511转换成十进制是777具有可执行权限
}
$nfn = $dir.date("Ymdhis").$i.".".$filetype; //构建文件的新名字
$nf = @fopen($nfn,"w"); //创建文件
fwrite($nf,$ff); //写入文件
fclose($nf); //关闭文件
$i++; //多文件++
echo "";
$content = str_replace($v,$nfn, $content);//替换content中的参数
}else{//获取不到图片则替换为默认图片
$content = str_replace($v,"/upload/201204/20120417213810742.gif", $content);//替换content中的参数
}
}
}
}
PHP通过正则表达式下载图片到本地实现代码
请参阅下面的示例
<p>
function get_pic_url($content){
$pattern="/
php curl抓取网页指定内容(phpcurlpost和patch都是不可逆请求方式(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-01-31 03:01
phpcurl抓取网页指定内容代码phpcurl抓取网页指定内容.php的curl函数-csdn博客phpcurl抓取网页指定内容,抓取的内容就是你要的get请求.
request
postget。这个文档里有。简单的说就是向a发送请求,接受结果返回给b。比如你看一个页面,先发个get包给浏览器,然后request,
curl
post,
selenium用的比较多
1、post,get,put,delete2、seti其他专业术语就不说了
post
so
post,get,put,
你都要抓取啥东西啊
最常用的是post
post,get,
ssl?request-form-header
post?
getpost
site-postdelete?
.
.get,request,...post,
get是adapplication的用法,post是一个http服务器的用法
post,put,
post和get,delete,
post,get,patch,
post不需要url,直接就是json格式的返回。
get,
post和patch都是不可逆请求方式。post还能再请求回数据来证明是否是请求了一个namespace下的对象,而patch是请求来动态生成一个新对象,明显patch生成的对象比get给的更新。所以说post要比get更容易被识别出来。 查看全部
php curl抓取网页指定内容(phpcurlpost和patch都是不可逆请求方式(组图))
phpcurl抓取网页指定内容代码phpcurl抓取网页指定内容.php的curl函数-csdn博客phpcurl抓取网页指定内容,抓取的内容就是你要的get请求.
request
postget。这个文档里有。简单的说就是向a发送请求,接受结果返回给b。比如你看一个页面,先发个get包给浏览器,然后request,
curl
post,
selenium用的比较多
1、post,get,put,delete2、seti其他专业术语就不说了
post
so
post,get,put,
你都要抓取啥东西啊
最常用的是post
post,get,
ssl?request-form-header
post?
getpost
site-postdelete?
.
.get,request,...post,
get是adapplication的用法,post是一个http服务器的用法
post,put,
post和get,delete,
post,get,patch,
post不需要url,直接就是json格式的返回。
get,
post和patch都是不可逆请求方式。post还能再请求回数据来证明是否是请求了一个namespace下的对象,而patch是请求来动态生成一个新对象,明显patch生成的对象比get给的更新。所以说post要比get更容易被识别出来。
php curl抓取网页指定内容( curl要求php环境支持,需要的朋友可以参考下要求)
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2022-01-20 08:04
curl要求php环境支持,需要的朋友可以参考下要求)
php使用curl获取远程图片实现方法
更新时间:2015年10月26日15:14:20投稿:lijiao
本文文章主要介绍php使用curl获取远程图片的实现方法。 curl 需要 php 环境支持。有需要的朋友可以参考以下
curl 需要 php 环境支持。您可以运行 phpinfo() 函数来查看它是否支持它。一般需要去掉php.ini中php_curl.dll前面的;extension=,然后重启IIS或者APACHE。
代码如下:
/*
*@通过curl方式获取指定的图片到本地
*@ 完整的图片地址
*@ 要存储的文件名
*/
function getImg($url = "", $filename = "")
{
//去除URL连接上面可能的引号
//$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url );
$hander = curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp);
curl_setopt($hander,CURLOPT_HEADER,0);
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
curl_setopt($hander,CURLOPT_TIMEOUT,60);
curl_exec($hander);
curl_close($hander);
fclose($fp);
Return true;
}
调用的时候直接getImg("/logo.jpg","upload/image.jpg")
实现代码2
代码如下:
<p> 查看全部
php curl抓取网页指定内容(
curl要求php环境支持,需要的朋友可以参考下要求)
php使用curl获取远程图片实现方法
更新时间:2015年10月26日15:14:20投稿:lijiao
本文文章主要介绍php使用curl获取远程图片的实现方法。 curl 需要 php 环境支持。有需要的朋友可以参考以下
curl 需要 php 环境支持。您可以运行 phpinfo() 函数来查看它是否支持它。一般需要去掉php.ini中php_curl.dll前面的;extension=,然后重启IIS或者APACHE。
代码如下:
/*
*@通过curl方式获取指定的图片到本地
*@ 完整的图片地址
*@ 要存储的文件名
*/
function getImg($url = "", $filename = "")
{
//去除URL连接上面可能的引号
//$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $url );
$hander = curl_init();
$fp = fopen($filename,'wb');
curl_setopt($hander,CURLOPT_URL,$url);
curl_setopt($hander,CURLOPT_FILE,$fp);
curl_setopt($hander,CURLOPT_HEADER,0);
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
curl_setopt($hander,CURLOPT_TIMEOUT,60);
curl_exec($hander);
curl_close($hander);
fclose($fp);
Return true;
}
调用的时候直接getImg("/logo.jpg","upload/image.jpg")
实现代码2
代码如下:
<p>
php curl抓取网页指定内容(phpcurl抓取网页指定内容。(抓取目录下面的话))
网站优化 • 优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2022-01-14 04:02
phpcurl抓取网页指定内容。这篇博客主要写抓取网页目录下面的script标签的内容。
0)mysql:5.1.19express:1.1.2(mysqlversion6.2.19.1.08
0)browser:nginx:18.12(engine1.1
1)ssl:ssh:3.3.1(ssl1.2.18.1.04063
4)mongodb:3.5.1.0(local)python:3.6.4.2pandas:2.13.2/python2.7.7/requests:3.0.3scrapy:3.0.4(openframework6.2.0alpha(alpha
0)(2018.11.1
3)(pythoncheckpoint))目前我的路由是:http/1.1.0301重定向prefixphp.ini文件(最好不要是默认路径)修改注意:apache默认的根目录地址是/var/lib/php-fpm/(apache也支持根目录下的php.ini文件.但是毕竟不是默认路径),所以我们可以不修改apache,而是修改php文件中的php.ini文件。
express:设置项:-all-fastcgi-paths.so/conf/conf.php注意:php.ini文件不要放在根目录下面,只有注释掉if这个符号才可以,其他的都需要放在/etc/中。2.php的版本控制在github上面有php的版本控制,不过是后端数据库的版本控制。本文以nginx为例,记住一定要把php文件夹包含在php文件中。
nginx的核心依赖是http.connector,包含了整个nginx的核心,所以我们把php文件放在nginx根目录下。所以我们需要把这个文件,也就是nginx的根目录下载下来:nginx:/var/lib/nginx/conf/nginx.conf自己修改一下。注意:把这个文件放在根目录下面的话,前端的php请求所在路径都不一定可用:nginx:/var/lib/nginx/sbin/nginx无论什么版本都是这样,如果文件放在根目录下,那么请复制到外网的nginx/bin中。
3.对于不同环境,如何解决问题/*要切换路径,如果目录是根目录就可以了*//*如果由于缓存之类的原因导致缓存文件失效,那么就删除log,重新放在根目录*//*如果是因为部署,缓存文件没有了,找不到缓存的具体位置,那么就需要缓存重新读取之后再放到根目录*//*如果是某个dll文件失效了,需要设置缓存,是后端dll.*/*抓取到的是网页的内容,并不是某个文件。
/*目录名称其实只是方便了别人清楚网页的目录,如果是仅仅想抓取网页指定的某个目录下面的内容那么就可以指定网页的目录名称*//*如果是仅仅想指定网页的文件名,方便别人下载别人的文件而不是自己写代。 查看全部
php curl抓取网页指定内容(phpcurl抓取网页指定内容。(抓取目录下面的话))
phpcurl抓取网页指定内容。这篇博客主要写抓取网页目录下面的script标签的内容。
0)mysql:5.1.19express:1.1.2(mysqlversion6.2.19.1.08
0)browser:nginx:18.12(engine1.1
1)ssl:ssh:3.3.1(ssl1.2.18.1.04063
4)mongodb:3.5.1.0(local)python:3.6.4.2pandas:2.13.2/python2.7.7/requests:3.0.3scrapy:3.0.4(openframework6.2.0alpha(alpha
0)(2018.11.1
3)(pythoncheckpoint))目前我的路由是:http/1.1.0301重定向prefixphp.ini文件(最好不要是默认路径)修改注意:apache默认的根目录地址是/var/lib/php-fpm/(apache也支持根目录下的php.ini文件.但是毕竟不是默认路径),所以我们可以不修改apache,而是修改php文件中的php.ini文件。
express:设置项:-all-fastcgi-paths.so/conf/conf.php注意:php.ini文件不要放在根目录下面,只有注释掉if这个符号才可以,其他的都需要放在/etc/中。2.php的版本控制在github上面有php的版本控制,不过是后端数据库的版本控制。本文以nginx为例,记住一定要把php文件夹包含在php文件中。
nginx的核心依赖是http.connector,包含了整个nginx的核心,所以我们把php文件放在nginx根目录下。所以我们需要把这个文件,也就是nginx的根目录下载下来:nginx:/var/lib/nginx/conf/nginx.conf自己修改一下。注意:把这个文件放在根目录下面的话,前端的php请求所在路径都不一定可用:nginx:/var/lib/nginx/sbin/nginx无论什么版本都是这样,如果文件放在根目录下,那么请复制到外网的nginx/bin中。
3.对于不同环境,如何解决问题/*要切换路径,如果目录是根目录就可以了*//*如果由于缓存之类的原因导致缓存文件失效,那么就删除log,重新放在根目录*//*如果是因为部署,缓存文件没有了,找不到缓存的具体位置,那么就需要缓存重新读取之后再放到根目录*//*如果是某个dll文件失效了,需要设置缓存,是后端dll.*/*抓取到的是网页的内容,并不是某个文件。
/*目录名称其实只是方便了别人清楚网页的目录,如果是仅仅想抓取网页指定的某个目录下面的内容那么就可以指定网页的目录名称*//*如果是仅仅想指定网页的文件名,方便别人下载别人的文件而不是自己写代。
php curl抓取网页指定内容( 命令行下的cURL能做什么(本文)(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-01-13 00:21
命令行下的cURL能做什么(本文)(组图))
最近准备入手一个PHP爬虫,发现PHP的cURL的知识绕不过去。本文讨论的是基础实战,需要提前了解命令行的使用,搭建PHP环境。
卷曲的概念
cURL,即客户端 URL 库函数,是一个开源文件传输工具,它使用 URL 语法在命令行模式下工作。它广泛用于 Unix 和 Linux 发行版,并且在 Win32、Win64 下有一个移植版本。常用的 cURL 库 libcurl 支持 http、https、ftp、gopher、telnet、dict、file 和 ldap 协议。libcurl 还支持 HTTPS 身份验证、HTTP POST、HTTP PUT、FTP 上传(这也可以通过 PHP 的 FTP 扩展完成)、基于 HTTP 表单的上传、代理、cookie 和用户名+密码身份验证。
[图片上传失败...(image-cc9fed-83)]](%7CimageView2/2/w/1240)
简而言之,cURL 是一个客户端启动的管理程序,它支持大多数 Internet 协议套件,并且可以下载或上传网络文件。
命令行下cURL可以做什么爬取网页源码
打开命令行,输入以下命令,向百度服务器发送请求,获取首页源代码。>命令将源代码输出保存到当前目录下的baidu.html。
curl https://www.baidu.com > baidu.html
获取表单 GET 或 POST 方法
网页中的标签通常用于生成表单。当我们点击表单中的提交按钮时,浏览器会对表单中填写的所有参数进行分析打包,最后通过指定的HTTP方式发送到目标网络地址。
如下代码所示,将用户在输入框中填写的参数信息添加到URL地址中,并发送GET方法到目标服务器下的judge.php。在 GET 方法中,值与表单中的每个字段一一对应。
GET方法中的参数会出现在URL地址中,所以我们也在基于命令行的cURL下进行模拟。
curl www.example.com/judge.php?year=1997&press=ok
URL 语法表示一般的 URL 地址格式如下。不难看出,上面示例代码中的year字段及其值是
实例。
://:@:/:?#
与 GET 方法不同,HTTP 中的 POST 请求将数据传输到服务器。由于经常会有账号、密码等隐私信息,所以这些数据通常会添加到 HTML Header 中,在 URL 地址中是不可见的,然后将数据传输到目标服务器。
在命令行上,cURL 将 POST 方法作为 -d 参数处理。
curl -d "year=1997&press=OK" www.example.com/judge.php
上传文件 POST 或 PUT 方法
1995 年末,RFC 1867 定义了一种用于上传文件的新 POST 方法。主要用于上传本地文件到服务器。此时页面内容如下:
对应的 cURL 命令使用 -F 作为命令参数,如下所示。
curl -F upload=@localfilename -F press=OK URL
HTTP 协议文件上传的标准方法是使用 PUT,在这种情况下 cURL 命令使用 -T 参数:
curl -T uploadfile www.uploadhttp. com/receive.php
假装是指定的客户
有些网络资源首先需要判断用户使用的是什么浏览器,符合标准才能下载或浏览。此时 curl 可以像任何其他浏览器一样“伪装”自己:
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL
该指令表示cURL伪装成IE5.0,用户平台为Windows 2000。
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL
此时 cURL 变成了 Netscape,运行在 PIII 平台上的 Linux 上。
和更多
在cURL的概念中提到,除了请求网页、上传文件和伪装外,cURL的功能还包括使用cookies访问目标服务器(参数-b)、访问加密的HTTP页面(HTTPS)、使用本地证书访问需要证书认证。网络上的所有资源都可以通过 cURL 访问和下载。
在 PHP 中使用 cURL
Daniel Stenberg 创建的 PHP 支持的 libcurl 库允许我们使用各种类型的协议与各种服务器进行连接和通信。
为了使用 cURL 功能,您需要安装 cURL 包。PHP 要求我们使用 cURL 7.0.2-beta 或更高版本。如果 cURL 的版本低于 7.0.2-beta,PHP 将无法工作。
要使用 PHP 的 CURL 支持,我们必须使用 --with-curl[=DIR] 参数重新编译 PHP(DIR 是收录库和头文件的目录)。
在前面提到的命令行下cURL的实现中,不难理解PHP中的cURL函数:首先使用curl_init()函数初始化cURL会话,然后就可以设置与这个cURL过程相关的所有选项,并通过 curl_exec() 函数执行它。最后,我们可以使用 curl_close() 函数来结束当前会话并节省资源。下面是 MOOC 上 PHP 中 cURL 过程的图示。
[图片上传失败...(image-1c28eb-84)]](%7CimageView2/2/w/1240)
安装卷曲
Mac 自带的 PHP 环境对 cURL 提供了很好的支持。如果它不是 Macintosh,也许这些可以提供帮助:
Generic Linux 下的 cURL 安装
获取安装包,直接从网上或者其他方式下载,这里直接wget
# wget http://curl.haxx.se/download/curl-7.17.1.tar.gz
解压到当前目录,输入
# tar -zxf curl-7.17.1.tar.gz & cd curl-7.17.1
配置,指定安装目录,这里是“/usr/local/curl”
# ./configure –prefix=/usr/local/curl
编译安装
安装完成后,将 curl 命令添加到环境变量中。
# export PATH=$PATH:/usr/local/curl/bin
Ubuntu小卷曲安装
Ubuntu 自带的 apt-get 包管理器可以帮助我们解决所有的依赖。
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
然后重启服务器,这里是apache服务器。
sudo /etc/init.d/apache2 restart
Windows下的扩展
Windows下安装PHP后,将PHP文件夹下的三个文件 php_curl.dll , libeay32.dll , ssleay32.dll 复制到system32中,然后将php.ini (c:WINDOWS 去掉分号后在 ;extension=php_curl.dll 中,在 ;extension=php_curl.dll 中,重启服务器。
开始实战
这里从简单到复杂的小Demo,一步一步来。
一个简单的带有 cURL 的网络爬虫
将以下 PHP 代码保存为 example1.php 并在命令行中执行。
php -f example1.php > baidu1.html
open baidu1.html
使用 cURL 抓取网页信息并替换部分内容
将以下 PHP 代码另存为 example2.php 并在命令行中执行。
php -f example2.php > baidu2.html
open baidu2.html
使用 cURL 获取天气信息
将以下 PHP 代码另存为 example2.php 并在命令行中执行。
php -f example2.php > weather.html
open weather.html
本文介绍cURL的基础知识和cURL在PHP中的基本实战。请期待更高级的用法。 查看全部
php curl抓取网页指定内容(
命令行下的cURL能做什么(本文)(组图))
最近准备入手一个PHP爬虫,发现PHP的cURL的知识绕不过去。本文讨论的是基础实战,需要提前了解命令行的使用,搭建PHP环境。
卷曲的概念
cURL,即客户端 URL 库函数,是一个开源文件传输工具,它使用 URL 语法在命令行模式下工作。它广泛用于 Unix 和 Linux 发行版,并且在 Win32、Win64 下有一个移植版本。常用的 cURL 库 libcurl 支持 http、https、ftp、gopher、telnet、dict、file 和 ldap 协议。libcurl 还支持 HTTPS 身份验证、HTTP POST、HTTP PUT、FTP 上传(这也可以通过 PHP 的 FTP 扩展完成)、基于 HTTP 表单的上传、代理、cookie 和用户名+密码身份验证。
[图片上传失败...(image-cc9fed-83)]](%7CimageView2/2/w/1240)
简而言之,cURL 是一个客户端启动的管理程序,它支持大多数 Internet 协议套件,并且可以下载或上传网络文件。
命令行下cURL可以做什么爬取网页源码
打开命令行,输入以下命令,向百度服务器发送请求,获取首页源代码。>命令将源代码输出保存到当前目录下的baidu.html。
curl https://www.baidu.com > baidu.html
获取表单 GET 或 POST 方法
网页中的标签通常用于生成表单。当我们点击表单中的提交按钮时,浏览器会对表单中填写的所有参数进行分析打包,最后通过指定的HTTP方式发送到目标网络地址。
如下代码所示,将用户在输入框中填写的参数信息添加到URL地址中,并发送GET方法到目标服务器下的judge.php。在 GET 方法中,值与表单中的每个字段一一对应。
GET方法中的参数会出现在URL地址中,所以我们也在基于命令行的cURL下进行模拟。
curl www.example.com/judge.php?year=1997&press=ok
URL 语法表示一般的 URL 地址格式如下。不难看出,上面示例代码中的year字段及其值是
实例。
://:@:/:?#
与 GET 方法不同,HTTP 中的 POST 请求将数据传输到服务器。由于经常会有账号、密码等隐私信息,所以这些数据通常会添加到 HTML Header 中,在 URL 地址中是不可见的,然后将数据传输到目标服务器。
在命令行上,cURL 将 POST 方法作为 -d 参数处理。
curl -d "year=1997&press=OK" www.example.com/judge.php
上传文件 POST 或 PUT 方法
1995 年末,RFC 1867 定义了一种用于上传文件的新 POST 方法。主要用于上传本地文件到服务器。此时页面内容如下:
对应的 cURL 命令使用 -F 作为命令参数,如下所示。
curl -F upload=@localfilename -F press=OK URL
HTTP 协议文件上传的标准方法是使用 PUT,在这种情况下 cURL 命令使用 -T 参数:
curl -T uploadfile www.uploadhttp. com/receive.php
假装是指定的客户
有些网络资源首先需要判断用户使用的是什么浏览器,符合标准才能下载或浏览。此时 curl 可以像任何其他浏览器一样“伪装”自己:
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" URL
该指令表示cURL伪装成IE5.0,用户平台为Windows 2000。
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" URL
此时 cURL 变成了 Netscape,运行在 PIII 平台上的 Linux 上。
和更多
在cURL的概念中提到,除了请求网页、上传文件和伪装外,cURL的功能还包括使用cookies访问目标服务器(参数-b)、访问加密的HTTP页面(HTTPS)、使用本地证书访问需要证书认证。网络上的所有资源都可以通过 cURL 访问和下载。
在 PHP 中使用 cURL
Daniel Stenberg 创建的 PHP 支持的 libcurl 库允许我们使用各种类型的协议与各种服务器进行连接和通信。
为了使用 cURL 功能,您需要安装 cURL 包。PHP 要求我们使用 cURL 7.0.2-beta 或更高版本。如果 cURL 的版本低于 7.0.2-beta,PHP 将无法工作。
要使用 PHP 的 CURL 支持,我们必须使用 --with-curl[=DIR] 参数重新编译 PHP(DIR 是收录库和头文件的目录)。
在前面提到的命令行下cURL的实现中,不难理解PHP中的cURL函数:首先使用curl_init()函数初始化cURL会话,然后就可以设置与这个cURL过程相关的所有选项,并通过 curl_exec() 函数执行它。最后,我们可以使用 curl_close() 函数来结束当前会话并节省资源。下面是 MOOC 上 PHP 中 cURL 过程的图示。
[图片上传失败...(image-1c28eb-84)]](%7CimageView2/2/w/1240)
安装卷曲
Mac 自带的 PHP 环境对 cURL 提供了很好的支持。如果它不是 Macintosh,也许这些可以提供帮助:
Generic Linux 下的 cURL 安装
获取安装包,直接从网上或者其他方式下载,这里直接wget
# wget http://curl.haxx.se/download/curl-7.17.1.tar.gz
解压到当前目录,输入
# tar -zxf curl-7.17.1.tar.gz & cd curl-7.17.1
配置,指定安装目录,这里是“/usr/local/curl”
# ./configure –prefix=/usr/local/curl
编译安装
安装完成后,将 curl 命令添加到环境变量中。
# export PATH=$PATH:/usr/local/curl/bin
Ubuntu小卷曲安装
Ubuntu 自带的 apt-get 包管理器可以帮助我们解决所有的依赖。
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
然后重启服务器,这里是apache服务器。
sudo /etc/init.d/apache2 restart
Windows下的扩展
Windows下安装PHP后,将PHP文件夹下的三个文件 php_curl.dll , libeay32.dll , ssleay32.dll 复制到system32中,然后将php.ini (c:WINDOWS 去掉分号后在 ;extension=php_curl.dll 中,在 ;extension=php_curl.dll 中,重启服务器。
开始实战
这里从简单到复杂的小Demo,一步一步来。
一个简单的带有 cURL 的网络爬虫
将以下 PHP 代码保存为 example1.php 并在命令行中执行。
php -f example1.php > baidu1.html
open baidu1.html
使用 cURL 抓取网页信息并替换部分内容
将以下 PHP 代码另存为 example2.php 并在命令行中执行。
php -f example2.php > baidu2.html
open baidu2.html
使用 cURL 获取天气信息
将以下 PHP 代码另存为 example2.php 并在命令行中执行。
php -f example2.php > weather.html
open weather.html
本文介绍cURL的基础知识和cURL在PHP中的基本实战。请期待更高级的用法。
php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-01-05 09:11
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br style="clear:both; width:0px; height:0px" />phpinfo();<br style="clear:both; width:0px; height:0px" />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br style="clear:both; width:0px; height:0px" />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'#39;);
// 设置标题
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<br style="clear:both; width:0px; height:0px" />$phoneNumber = '13912345678';<br style="clear:both; width:0px; height:0px" />$message = 'This message was generated by curl and php';<br style="clear:both; width:0px; height:0px" />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';<br style="clear:both; width:0px; height:0px" />$ch = curl_init();<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HEADER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_POST, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br style="clear:both; width:0px; height:0px" />$data = curl_exec();<br style="clear:both; width:0px; height:0px" />curl_close($ch);<br style="clear:both; width:0px; height:0px" />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br style="clear:both; width:0px; height:0px" />$ch = curl_init();<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HEADER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br style="clear:both; width:0px; height:0px" />$data = curl_exec();<br style="clear:both; width:0px; height:0px" />curl_close($ch);<br style="clear:both; width:0px; height:0px" />?﹥
关于 SSL 和 Cookie 查看全部
php curl抓取网页指定内容(使用PHP的cURL库可以简单和有效地去抓网页。)
使用 PHP 的 cURL 库来简单有效地抓取网页。你只需要运行一个脚本,然后分析你抓取的网页,然后你就可以通过编程的方式得到你想要的数据。无论您是想从链接中获取部分数据,还是获取 XML 文件并将其导入数据库,即使只是获取网页内容,cURL 都是一个强大的 PHP 库。本文主要介绍如何使用这个PHP库。
启用卷曲设置
首先我们要先判断我们的PHP是否启用了这个库,可以通过php_info()函数来获取这个信息。
﹤?php<br style="clear:both; width:0px; height:0px" />phpinfo();<br style="clear:both; width:0px; height:0px" />?﹥
如果在网页上可以看到如下输出,说明cURL库已经开启。
如果你看到它,那么你需要设置你的 PHP 并启用这个库。如果你是windows平台,很简单,你需要改变你的php.ini文件的设置,找到php_curl.dll,去掉前面的分号。如下:
//取消下在的注释<br style="clear:both; width:0px; height:0px" />extension=php_curl.dll
如果你在 Linux 下,那么你需要重新编译你的 PHP。编辑时需要开启编译参数——在configure命令中添加“--with-curl”参数。
一个小例子
如果一切就绪,这里有一个小程序:
﹤?php
// 初始化一个 cURL 对象
$curl = curl_init();
// 设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL,'#39;);
// 设置标题
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<br style="clear:both; width:0px; height:0px" />$phoneNumber = '13912345678';<br style="clear:both; width:0px; height:0px" />$message = 'This message was generated by curl and php';<br style="clear:both; width:0px; height:0px" />$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';<br style="clear:both; width:0px; height:0px" />$ch = curl_init();<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HEADER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_POST, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);<br style="clear:both; width:0px; height:0px" />$data = curl_exec();<br style="clear:both; width:0px; height:0px" />curl_close($ch);<br style="clear:both; width:0px; height:0px" />?﹥
从上面的程序可以看出,CURLOPT_POST是用来设置HTTP协议的POST方法而不是GET方法的,然后CURLOPT_POSTFIELDS是用来设置POST数据的。
关于代理服务器
以下是如何使用代理服务器的示例。请注意高亮的代码,代码很简单,我就不多说了。
﹤?php <br style="clear:both; width:0px; height:0px" />$ch = curl_init();<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HEADER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');<br style="clear:both; width:0px; height:0px" />curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');<br style="clear:both; width:0px; height:0px" />$data = curl_exec();<br style="clear:both; width:0px; height:0px" />curl_close($ch);<br style="clear:both; width:0px; height:0px" />?﹥
关于 SSL 和 Cookie
php curl抓取网页指定内容(,PHP,CURL获取,返回,值,的,方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-12-28 13:03
PHP CURL方法获取返回值, PHP, CURL, get, return, value, of, method, in, CURL, in
PHP CURL 方法获取返回值
易菜站长网站,站长之家整理了PHP CURL方法的相关内容,为您获取返回值。
CURL 中有一个参数 CURLOPT_RETURNTRANSFER:
代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
默认为0,直接返回获取的输出文本流。有时,我们需要将返回值用于判断或其他目的。
幸运的是,可以设置 CURLOPT_RETURNTRANSFER,如果设置为 CURLOPT_RETURNTRANSFER 1:
代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
然后你可以在没有 curl_close 的情况下关闭 cURL 会话之前使用它: curl_multi_getcontent($ch)
您可以获取服务器返回的值。它是一个字符串类型!
PHP手册如下:
代码如下:curl_multi_getcontent(resource $ch)
如果 CURLOPT_RETURNTRANSFER 作为选项设置为特定句柄,则该函数将以字符串的形式返回该 cURL 句柄获取的内容。
以上就是对获取PHP CURL返回值的方法的详细介绍。欢迎大家对PHP CURL方法获取返回值的内容提出宝贵意见 查看全部
php curl抓取网页指定内容(,PHP,CURL获取,返回,值,的,方法)
PHP CURL方法获取返回值, PHP, CURL, get, return, value, of, method, in, CURL, in
PHP CURL 方法获取返回值
易菜站长网站,站长之家整理了PHP CURL方法的相关内容,为您获取返回值。
CURL 中有一个参数 CURLOPT_RETURNTRANSFER:
代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
默认为0,直接返回获取的输出文本流。有时,我们需要将返回值用于判断或其他目的。
幸运的是,可以设置 CURLOPT_RETURNTRANSFER,如果设置为 CURLOPT_RETURNTRANSFER 1:
代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
然后你可以在没有 curl_close 的情况下关闭 cURL 会话之前使用它: curl_multi_getcontent($ch)
您可以获取服务器返回的值。它是一个字符串类型!
PHP手册如下:
代码如下:curl_multi_getcontent(resource $ch)
如果 CURLOPT_RETURNTRANSFER 作为选项设置为特定句柄,则该函数将以字符串的形式返回该 cURL 句柄获取的内容。
以上就是对获取PHP CURL返回值的方法的详细介绍。欢迎大家对PHP CURL方法获取返回值的内容提出宝贵意见