
snoopy php网页抓取工具
snoopy php网页抓取工具(Snoopy的一些特点以及LAMP服务都支持的服务方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2022-04-19 09:09
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
一、史努比的一些功能
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持curl时的最佳选择
二、类方法
获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
fetchlinks($URI) 这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
三、类属性(括号内是默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(Snoopy的一些特点以及LAMP服务都支持的服务方法)
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
一、史努比的一些功能
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持curl时的最佳选择
二、类方法
获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
fetchlinks($URI) 这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
三、类属性(括号内是默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(PHP类Snoopy是什么?PHP语言中功能强大的一些特点)
网站优化 • 优采云 发表了文章 • 0 个评论 • 87 次浏览 • 2022-04-10 16:15
大家都知道,在PHP语言中,有很多强大的功能可以帮助程序员完成各种功能需求。今天要给大家介绍的是PHP类Snoopy的一些相关知识。
什么是 PHP 类 Snoopy?
Snoopy 是一个模仿网络浏览器功能的 php 类,可以执行诸如获取网页内容和发送表单等任务。
PHP 类 Snoopy 的一些特性:
* 轻松抓取网页内容
* 轻松抓取网页文本内容(去除HTML标签)
* 方便抓取网页的链接
* 支持代理主机
* 支持基本的用户名/密码认证
* 支持设置user_agent、referer(来)、cookies和header内容(头文件)
* 支持浏览器转向,可以控制转向深度
* 可以将网页中的链接扩展为高质量的网址(默认)
* 方便提交数据并获取返回值
* 支持跟踪HTML框架(v0.92增加)
* 重定向时支持传递cookie(v0.92增加)
PHP类Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
它提供以下接口或方法:
获取($URI)
这个方法是爬取网页的内容,$URI是要爬取的网页的URL,爬取的结果存放在$this->results中。如果抓取帧,每帧都会被抓取,结果会保存到数组中。
获取文本($URI)
此方法与 fetch() 非常相似,只是它的结果是文本,去掉了 HTML 标记和其他无关信息。
fetchform($URI)
该方法只返回抓取网页上的表单元素。
获取链接($URI)
该方法只返回被抓取网页上的链接。默认链接都是收录域名的链接。
提交($URI,$formvars)
此方法将表单提交到指定的 $URI。 $formvars 是要传递的表单变量数组。
提交文本($URI,$formvars)
这个方法和submit()基本一样,但是它返回文本,去掉了html标签和其他无关数据。
提交链接($URI)
此方法返回一个链接。
以上都是对PHP类Snoopy的介绍,希望对大家有所帮助。 查看全部
snoopy php网页抓取工具(PHP类Snoopy是什么?PHP语言中功能强大的一些特点)
大家都知道,在PHP语言中,有很多强大的功能可以帮助程序员完成各种功能需求。今天要给大家介绍的是PHP类Snoopy的一些相关知识。
什么是 PHP 类 Snoopy?
Snoopy 是一个模仿网络浏览器功能的 php 类,可以执行诸如获取网页内容和发送表单等任务。
PHP 类 Snoopy 的一些特性:
* 轻松抓取网页内容
* 轻松抓取网页文本内容(去除HTML标签)
* 方便抓取网页的链接
* 支持代理主机
* 支持基本的用户名/密码认证
* 支持设置user_agent、referer(来)、cookies和header内容(头文件)
* 支持浏览器转向,可以控制转向深度
* 可以将网页中的链接扩展为高质量的网址(默认)
* 方便提交数据并获取返回值
* 支持跟踪HTML框架(v0.92增加)
* 重定向时支持传递cookie(v0.92增加)
PHP类Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
它提供以下接口或方法:
获取($URI)
这个方法是爬取网页的内容,$URI是要爬取的网页的URL,爬取的结果存放在$this->results中。如果抓取帧,每帧都会被抓取,结果会保存到数组中。
获取文本($URI)
此方法与 fetch() 非常相似,只是它的结果是文本,去掉了 HTML 标记和其他无关信息。
fetchform($URI)
该方法只返回抓取网页上的表单元素。
获取链接($URI)
该方法只返回被抓取网页上的链接。默认链接都是收录域名的链接。
提交($URI,$formvars)
此方法将表单提交到指定的 $URI。 $formvars 是要传递的表单变量数组。
提交文本($URI,$formvars)
这个方法和submit()基本一样,但是它返回文本,去掉了html标签和其他无关数据。
提交链接($URI)
此方法返回一个链接。
以上都是对PHP类Snoopy的介绍,希望对大家有所帮助。
snoopy php网页抓取工具(做抓取前,记得把php.ini中的max_execution)
网站优化 • 优采云 发表了文章 • 0 个评论 • 176 次浏览 • 2022-04-09 03:36
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。
一、 使用 Snoopy.class.php 抓取页面
一个很可爱的班级名字。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。
1)我要抓取网站的一个列表页的内容,我要抓取的是全国医院信息内容,如下图:
2)我自然是复制了URL地址,用Snoopy类抓取前10页的内容,并将内容放到本地,在本地创建了一个html文件,用于后面的分析。
$snoopy=new Snoopy();
//医院list页面
for($i = 1; $i fetch($url);
file_put_contents("web/page/$i.html", $snoopy->results);
}
echo 'success';
3)很奇怪,返回的内容不是国家内容,而是上海的相关内容
4) 后来怀疑里面可能设置了一个cookie,然后用firebug查了一下,里面有一个惊人的内幕
5)请求中也放入了cookie的值,加上了一个设置语句$snoopy->cookies["_area_"],情况就大不一样了,顺利返回全国信息。
$snoopy=new Snoopy();
//医院list页面
$snoopy->cookies["_area_"] = '{"provinceId":"all","provinceName":"全国","cityId":"all","cityName":"不限"}';
for($i = 1; $i fetch($url);
$html = $snoopy->results;
}
2)使用phpQuery获取节点信息,如下图DOM结构:
使用一些phpQuery方法,结合DOM结构读取各个医院信息的URL地址。
for($i = 1; $i attr('href')); //医院详情
}
}
3)根据读取的URL地址列表,抓取指定页面。
$detailIndex = 1;
for($i = 1; $i results);
$detailIndex++;
}
}
FQ工具下载:
克服障碍.rar
演示下载:
关于 Snoopy 类的一些注意事项:
类方法
获取($URI)
这是用于抓取网页内容的方法。
$URI 参数是被抓取网页的 URL 地址。
获取的结果存储在 $this->results 中。
如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的文本内容。
获取表单($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。
默认情况下,相对链接将自动完成为完整的 URL。
类属性
$主机
连接主机
$端口
连接端口
$proxy_host
使用的代理主机(如果有)
$proxy_port
要使用的代理主机端口(如果有)
$代理
用户代理伪装(史努比 v0.1)
$推荐人
到达信息,如果有的话
$cookies
饼干,如果有的话
$原创头文件
其他标题信息(如果有)
$maxredirs
最大重定向数,0 = 不允许 (5)
$offsiteok
是否允许异地重定向。(真的)
$展开链接
是否完成链接到完整地址(true)
$用户
身份验证用户名(如果有)
$通行证
身份验证用户名(如果有)
$接受
http 接受类型(image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)
$错误
错误在哪里,如果有的话
$response_code
服务器返回的响应码
$标头
从服务器返回的标头
$最大长度
最大返回数据长度
$read_timeout
读取操作超时(需要 PHP 4 Beta 4+),设置为 0 表示无超时
$timed_out
如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+)
$最大帧数
允许跟踪的最大帧数
$状态 查看全部
snoopy php网页抓取工具(做抓取前,记得把php.ini中的max_execution)
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。
一、 使用 Snoopy.class.php 抓取页面
一个很可爱的班级名字。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。
1)我要抓取网站的一个列表页的内容,我要抓取的是全国医院信息内容,如下图:
2)我自然是复制了URL地址,用Snoopy类抓取前10页的内容,并将内容放到本地,在本地创建了一个html文件,用于后面的分析。
$snoopy=new Snoopy();
//医院list页面
for($i = 1; $i fetch($url);
file_put_contents("web/page/$i.html", $snoopy->results);
}
echo 'success';
3)很奇怪,返回的内容不是国家内容,而是上海的相关内容
4) 后来怀疑里面可能设置了一个cookie,然后用firebug查了一下,里面有一个惊人的内幕
5)请求中也放入了cookie的值,加上了一个设置语句$snoopy->cookies["_area_"],情况就大不一样了,顺利返回全国信息。
$snoopy=new Snoopy();
//医院list页面
$snoopy->cookies["_area_"] = '{"provinceId":"all","provinceName":"全国","cityId":"all","cityName":"不限"}';
for($i = 1; $i fetch($url);
$html = $snoopy->results;
}
2)使用phpQuery获取节点信息,如下图DOM结构:
使用一些phpQuery方法,结合DOM结构读取各个医院信息的URL地址。
for($i = 1; $i attr('href')); //医院详情
}
}
3)根据读取的URL地址列表,抓取指定页面。
$detailIndex = 1;
for($i = 1; $i results);
$detailIndex++;
}
}
FQ工具下载:
克服障碍.rar
演示下载:
关于 Snoopy 类的一些注意事项:
类方法
获取($URI)
这是用于抓取网页内容的方法。
$URI 参数是被抓取网页的 URL 地址。
获取的结果存储在 $this->results 中。
如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的文本内容。
获取表单($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。
默认情况下,相对链接将自动完成为完整的 URL。
类属性
$主机
连接主机
$端口
连接端口
$proxy_host
使用的代理主机(如果有)
$proxy_port
要使用的代理主机端口(如果有)
$代理
用户代理伪装(史努比 v0.1)
$推荐人
到达信息,如果有的话
$cookies
饼干,如果有的话
$原创头文件
其他标题信息(如果有)
$maxredirs
最大重定向数,0 = 不允许 (5)
$offsiteok
是否允许异地重定向。(真的)
$展开链接
是否完成链接到完整地址(true)
$用户
身份验证用户名(如果有)
$通行证
身份验证用户名(如果有)
$接受
http 接受类型(image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)
$错误
错误在哪里,如果有的话
$response_code
服务器返回的响应码
$标头
从服务器返回的标头
$最大长度
最大返回数据长度
$read_timeout
读取操作超时(需要 PHP 4 Beta 4+),设置为 0 表示无超时
$timed_out
如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+)
$最大帧数
允许跟踪的最大帧数
$状态
snoopy php网页抓取工具(PHP采集类Snoopy.class.php介绍以及下载是一个)
网站优化 • 优采云 发表了文章 • 0 个评论 • 152 次浏览 • 2022-04-07 19:02
PHP采集类Snoopy.class.php介绍及下载
Snoopy是一个非常强大的PHP类,可以用来模拟浏览器完成获取网页内容和发送表单的任务。下面详细介绍Snoopy.class.php的特性和一些常用的用法。
官方网站:(无法打开可以使用的国外浏览器网站)
下载地址:
本站下载地址:PHP采集库Snoopy.class.php下载
以下是史努比的一些功能:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(return)、cookies和header内容(头文件)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持重定向时传递cookie
备注:可以使用Snoopy.class.php 要求php4 或以上。由于是php类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
下面是一些常用的类方法的介绍:
获取($URI)
这是用于抓取网页内容的方法。 $URI参数是爬取网页的URL地址,爬取结果存放在$this->results中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(PHP采集类Snoopy.class.php介绍以及下载是一个)
PHP采集类Snoopy.class.php介绍及下载
Snoopy是一个非常强大的PHP类,可以用来模拟浏览器完成获取网页内容和发送表单的任务。下面详细介绍Snoopy.class.php的特性和一些常用的用法。
官方网站:(无法打开可以使用的国外浏览器网站)
下载地址:
本站下载地址:PHP采集库Snoopy.class.php下载
以下是史努比的一些功能:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(return)、cookies和header内容(头文件)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持重定向时传递cookie
备注:可以使用Snoopy.class.php 要求php4 或以上。由于是php类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
下面是一些常用的类方法的介绍:
获取($URI)
这是用于抓取网页内容的方法。 $URI参数是爬取网页的URL地址,爬取结果存放在$this->results中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(snoopy_get_contents()、file..php优缺点curl)
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2022-03-28 19:10
源码下载 DD cURL、文件获取内容、snoopy.class.php 优缺点 curl()、file_get_contents(),这三个用于远程页面爬取的工具还是采集,它们的功能是等价的,到底是优缺点如下: snoopy fsockopen开发的一个类,效率高,不需要服务器特定的配置支持。可以在普通的虚拟主机上使用,但是经常会出现问题。官网:/projects Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy的特点: 1、 抓取网页内容fetch 2、 抓取网页文本内容(去掉HTML标签) fetchtext 3、 抓取网页链接,form fetchlinks fetchform 4、@ >支持代理主机5、支持基本用户名/密码认证6、支持设置user_agent、referer(返回)、cookies headercontent(头文件)7、支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、@ > 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。
file_get_contents() file_get_contents fsockopen函数打包简单,效率稍低,但是捕获成功率很高,所以我一般在snoopy有问题的时候给他打电话。增加了对context的支持,有了context,他还可以发送header信息,自定义user agent,referer,cookies都有。添加了 offset maxlen 参数以只读文件的一部分。curl() 是最强大的,几乎可以模拟浏览器的每个方面,几乎就像是真实的一样。效率也很高,支持多线程,但是需要开启curl扩展。cURL 是一个使用 URL 语法规范传输文件和数据的工具,支持多种协议等。PHP 支持 cURL 库,我们经常使用它进行远程页面抓取和 采集。源码下载 DD 有的cms会用到curl功能,需要服务器开启CURL扩展。具体方法如下: 1、将PHP的ext目录下的三个文件:、、、和三个文件复制到系统system32目录下。;extension=去掉前面的分号3、重启IIS或者Apache4、@>测试代码 查看全部
snoopy php网页抓取工具(snoopy_get_contents()、file..php优缺点curl)
源码下载 DD cURL、文件获取内容、snoopy.class.php 优缺点 curl()、file_get_contents(),这三个用于远程页面爬取的工具还是采集,它们的功能是等价的,到底是优缺点如下: snoopy fsockopen开发的一个类,效率高,不需要服务器特定的配置支持。可以在普通的虚拟主机上使用,但是经常会出现问题。官网:/projects Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy的特点: 1、 抓取网页内容fetch 2、 抓取网页文本内容(去掉HTML标签) fetchtext 3、 抓取网页链接,form fetchlinks fetchform 4、@ >支持代理主机5、支持基本用户名/密码认证6、支持设置user_agent、referer(返回)、cookies headercontent(头文件)7、支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、@ > 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。
file_get_contents() file_get_contents fsockopen函数打包简单,效率稍低,但是捕获成功率很高,所以我一般在snoopy有问题的时候给他打电话。增加了对context的支持,有了context,他还可以发送header信息,自定义user agent,referer,cookies都有。添加了 offset maxlen 参数以只读文件的一部分。curl() 是最强大的,几乎可以模拟浏览器的每个方面,几乎就像是真实的一样。效率也很高,支持多线程,但是需要开启curl扩展。cURL 是一个使用 URL 语法规范传输文件和数据的工具,支持多种协议等。PHP 支持 cURL 库,我们经常使用它进行远程页面抓取和 采集。源码下载 DD 有的cms会用到curl功能,需要服务器开启CURL扩展。具体方法如下: 1、将PHP的ext目录下的三个文件:、、、和三个文件复制到系统system32目录下。;extension=去掉前面的分号3、重启IIS或者Apache4、@>测试代码
snoopy php网页抓取工具(最好的选择的特点及选择的方法介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 110 次浏览 • 2022-03-26 09:02
Snoopy是一个php类,用来模拟浏览器的一些简单功能,可以获取网页内容,发送表单等操作。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。由于是php类,不需要扩展,所以在服务器不支持curl的情况下是最好的选择
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(coming)、COOKIEs和header content(header)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML帧
11、支持重定向时传递 COOKIE
史努比类下载地址:
史努比类方法:
获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
史努比类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$COOKIEs COOKIE,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(最好的选择的特点及选择的方法介绍)
Snoopy是一个php类,用来模拟浏览器的一些简单功能,可以获取网页内容,发送表单等操作。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。由于是php类,不需要扩展,所以在服务器不支持curl的情况下是最好的选择
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(coming)、COOKIEs和header content(header)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML帧
11、支持重定向时传递 COOKIE
史努比类下载地址:
史努比类方法:
获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
史努比类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$COOKIEs COOKIE,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(如何验证码,简单说下:$URI的验证码本方法介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 87 次浏览 • 2022-03-25 05:14
关于如何验证代码,简单说一下:
先用普通浏览器查看页面,找到验证码对应的sessionid,
注意 sessionid 和验证码值,
那就用 snoopy 来伪装吧。
原理:因为是同一个sessionid,所以得到的验证码和第一次输入的一样。
有时我们可能需要伪造更多的东西,史努比完全为我们考虑了这一点
proxy_host = "www.fruicms.com";
$snoopy->proxy_port = "8080"; //使用代理
$snoopy->maxredirs = 2; //重定向次数
$snoopy->expandlinks = true; //是否补全链接 在采集的时候经常用到
// 例如链接为 /images/taoav.gif 可改为它的全链接 http://www.taoav.com/images/taoav.gif
$snoopy->maxframes = 5 //允许的最大框架数
//注意抓取框架的时候 $snoopy->results 返回的是一个数组
$snoopy->error //返回报错信息
?>
二、类方法:
获取($URI)
———–
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
——————-
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
提交($URI,$formvars)
—————————-
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
—————————–
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
——————-
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。(true)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(如何验证码,简单说下:$URI的验证码本方法介绍)
关于如何验证代码,简单说一下:
先用普通浏览器查看页面,找到验证码对应的sessionid,
注意 sessionid 和验证码值,
那就用 snoopy 来伪装吧。
原理:因为是同一个sessionid,所以得到的验证码和第一次输入的一样。
有时我们可能需要伪造更多的东西,史努比完全为我们考虑了这一点
proxy_host = "www.fruicms.com";
$snoopy->proxy_port = "8080"; //使用代理
$snoopy->maxredirs = 2; //重定向次数
$snoopy->expandlinks = true; //是否补全链接 在采集的时候经常用到
// 例如链接为 /images/taoav.gif 可改为它的全链接 http://www.taoav.com/images/taoav.gif
$snoopy->maxframes = 5 //允许的最大框架数
//注意抓取框架的时候 $snoopy->results 返回的是一个数组
$snoopy->error //返回报错信息
?>
二、类方法:
获取($URI)
———–
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
——————-
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
提交($URI,$formvars)
—————————-
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
—————————–
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
——————-
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。(true)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(php采集利器——模拟浏览器类snoopy应用by笨二十一)
网站优化 • 优采云 发表了文章 • 0 个评论 • 125 次浏览 • 2022-03-17 15:34
php采集Weapon--模拟浏览器式snoopy应用 笨二十一凌晨1点20分在PHP下发布,Web技术研究php页面资料采集,无意中发现Snoopy是一个类,snoopy是用php编写的一个php类,用来模拟浏览器功能。它可以模拟访问,向需要登录的Web服务器提交表单,并提供过滤信息的功能,让您可以根据需要获取所需的信息。 Snoopy官方网站:/projects/snoopy/Snoopy是一个模拟浏览器功能的php类,可以获取网页内容和发送表单。要让 Snoopy 正常运行,您的服务器的 PHP 版本必须至少为 4,并且它支持 PCRE(Perl Compatible Regular Expressions)以及基本的 LAMP 服务。下载snoopy Snoopy的一些特点: 1 抓取网页内容 fetch2 抓取网页文本内容(去掉HTML标签) fetchtext3 抓取网页链接,表单 fetchlinks fetchform4 支持代理主机 5 支持基本用户名/密码身份验证 6 支持设置 user_agent 、referer(来)、cookies 和 header 内容(头文件) 7 支持浏览器重定向和控制重定向深度 8 可以将网页中的链接扩展为高质量的url(默认) 9 提交数据并返回10的值支持跟踪HTML框架11。支持重定向时,传递cookie需要php4或更高版本。因为是PHP类,所以在服务器不支持curl的时候是最好的选择。类方法:fetch($URI)————这是用于抓取网页内容的方法。
$URI参数是被抓取网页的URL地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。 fetchtext($URI)————该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。 fetchform($URI)————该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。 fetchlinks($URI)————这个方法和fetch()类似,唯一不同的是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。 submit($URI, $formvars)------------ 该方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。 submittext($URI,$formvars)———————————这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回里面的文本内容登录后的网页。
submitlinks($URI)————这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。类属性:(括号内为默认值) $host 要连接的主机 $port 要连接的端口 $proxy_host 要使用的代理主机,如果有的话 $proxy_port 要使用的代理主机端口,如果有的话 $agent 用户agent 伪装 Snoopy v0.1)$referer 信息,如果有 $cookies cookie,如果有 $rawheaders 其他头信息,如果有 $maxredirs 最大重定向次数,0=不允许(5)@ >$offsiteok 是否允许异地重定向。(true)$expandlinks 是否完整链接到完整地址(true)$user 认证用户名,如果有 $pass 认证用户名,如果有$accept http 接受类型( image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)$error 报错的地方,如果有 $response_code 从服务器返回 响应码 $headers 从服务器返回的头信息 $ maxlength 最长返回数据长度 $read_timeout 读取操作超时(需要 PHP 4 Beta 4+)设置为 0 表示无超时 $time d_out 如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+) $maxframes 允许跟踪的最大帧数 $status http 爬取的状态 $temp_dir 目录,用于 Web 服务器可以写入的临时文件 ( /tmp) $curl_path cURL二进制目录,如果没有cURL二进制设置为false 下面是demoinclude "Snoopy.class.php";$snoopy = new Snoopy; $snoopy->proxy_host = "";$snoopy->proxy_port = "8080"; $snoopy->agent = "(兼容;MSIE 4.01;MSN 2.5;AOL 4.0;Windows 98)";$snoopy->referer = " /"; $snoopy->cookies[ "Se ssionID"] = 238472834723489l;$snoopy->cookies["favoriteColor"] = "RED"; $snoopy->rawheaders["Pragma"] = "no-cache"; $ snoopy->maxredirs = 2;$snoopy->offsiteok = false;$snoopy->expandlinks = false;$snoopy->user = "joe";$snoopy->pass = "bloe";if($snoopy->fetchtext ("")){echo " ".htmlspecialchars ($snoopy->results)."n";}elseecho "错误获取文档:".$snoopy->error."n";snoopy采集example< ?php//采集phpchinaset_time_limit(0);require_once("Snoopy.class.php");$snoopy=new Snoopy();//登录论坛$submit_url = "/bbs/logging.php ?action=login";$submit_vars["loginmode"] = "正常";$submit_vars["styleid"] = "1";$submit_vars["cookietime"] = "315360000";$submit_vars["loginfield"] = "username";$submit_vars["username"] = "***"; //你的用户名 $submit_vars["password"] = "*****"; //你的密码 $submit_vars["questionid"] = "0";$submit_vars[" 答案r"] = "";$submit_vars["loginsubmit"] = "Submit";$snoopy->submit($submit_url,$submit_vars);if ($snoopy->results){//获取连接地址$snoopy- > fetchlinks("/bbs");$url=array();$url=$snoopy->resu lts;//print_r($url);foreach($url as $key=>$value){//match /bbs/forumdisplay.php?fid=156&sid=VfcqTR地址为论坛地址 if (!preg_match("/ ^(/bbs/forumdisplay.php?fid=)[0-9]*&sid=[a-zA- Z]{6}/i",$value)){unset($url[$key]);} }//print_r($url);//获取盘子数组$url,循环访问,得到这里是第一个模块第一页的数据 $i=0;foreach ($url as $key=>$value) {if ($i>=1){//Test limit break;}else{ //访问该模块,提取post的连接地址,在正式访问时,需要提取post分页的数据,然后根据分页数据提取post数据 $snoopy=new Snoopy();$ snoopy->fetchlinks($value);$tie=array();$tie[$i]=$snoopy->results;//print_r($tie);//转换数组foreach($tie[$i] as $key=>$value){//垫ch/bbs/viewthread.php?tid=68127&extra=page%3D1&page=1&sid=iBLZfKif (!preg_match("/^(/bbs/viewthread.php?tid=)[0-9]*&extra=page%3D1&page=[ 0-9]*&sid=[a-zA-Z]{6}/i",$value)){unset($tie [$i][$key]);}}//print_r($tie[$ i]);//分类数组,将同一篇文章不同页面的内容放入一个数组 $left='';//连接左边的公共地址 $j=0;$page=array();foreach($ tie[$i] as $key=>$value){$left=substr($value,0,52); $m=0;foreach ($tie[$i] as $pkey=>$pvalue){//重组数组 if (substr($pvalue,0,52)==$left){$page [ $j][$m]=$pvalue;$m++;}}$j++;}//去除重复开始//$page=array_unique($page);只能用于一维数组 $paget[0 ]=$page[0];$nums=count($page);for ($n=1;$n< $nums;$n++){$paget[$n]=array_diff($page[$n], $page[$n-1]);}//去掉多维数组重复值的末尾//去掉数组的空值 unset($page); $page=array();//重新定义页面数组 $page=array_filter($paget);//print_r($page);$u=0;$title=array();$content=array();$ temp='';$tt=array ();foreach ($page as $key=>$value){//外循环,用于一个帖子 if (is_array($value)){foreach ($value as $k1= >$v1){ //页内循环,对于帖子的N页 $snoopy=new Snoopy();$snoopy->fetch($v1);$temp=$snoopy-> results;//读取标题 if (!preg_match_all("/(.*)< /h2>/i",$temp,$tt)){echo "无标题";exit;}else{$title[$u ]=$tt[1][ 1];}unset($tt);//读取内容 if (!preg_match_all("/ ( .*)< /div>/i",$temp,$tt)){ print_r($tt);echo "no content1";exit;}else{foreach ($tt[1] as $c=>$c 2){$content[$u].=$c2;}} }}else{//直接获取页面内容 $snoopy=new Snoopy();$snoopy->fetch($value);$temp =$snoopy->results;//读取标题 if (!preg_match_all("/( .*)< /h2>/i",$temp,$tt)){echo "no title";exit;}else{ $title[$u]=$tt[1][1];}unset($tt);//读取内容 if (!preg_match_all("/ (.*)< /div>/i",$te mp ,$tt)){echo "no content2";exit;}else{foreach ($tt[1] as $c=>$c2){$content[$u].=$c2;} } }$u++;}print_r($content);}$i++;}}else{echo "login failed";exit;}?> PHP采集 类:史努比一直在尝试做一个 PHP采集@ > 计划,但一直没有进展。在网上找了半天,找到了这个类。好像挺有名的~~ Snoopy是一个php类,用来模仿网页浏览器的功能。它可以完成网页内容的获取和传输。表单任务。
官方网站 /???以下是它的一些特点: 1、易抓取网页内容2、易抓取网页文字(去掉HTML代码)3、易网页链接抓取4、支持代理主机5、支持基本用户/密码认证方式6、支持自定义用户代理、referer、cookies和header内容7、支持浏览器重定向和控制深度重定向8、可以将网页中的链接展开成高质量的url(默认)9、方便提交数据并获取返回值10、支持跟踪HTML框架(v0. 92增加) 11、支持重定向时传递cookie 例如抓取链接 ------------------------------ ------------ -----首先我们需要获取登录需要发送哪些字段,目标地址是什么。这里我们使用 snoopy 的 fetchform 来实现这一点。当然也可以直接查看/happy/...的源码来实现,不过这样更方便。到这里,我们已经获取了目标和提交的数据,接下来就是实现模拟登录了。代码如下: 查看全部
snoopy php网页抓取工具(php采集利器——模拟浏览器类snoopy应用by笨二十一)
php采集Weapon--模拟浏览器式snoopy应用 笨二十一凌晨1点20分在PHP下发布,Web技术研究php页面资料采集,无意中发现Snoopy是一个类,snoopy是用php编写的一个php类,用来模拟浏览器功能。它可以模拟访问,向需要登录的Web服务器提交表单,并提供过滤信息的功能,让您可以根据需要获取所需的信息。 Snoopy官方网站:/projects/snoopy/Snoopy是一个模拟浏览器功能的php类,可以获取网页内容和发送表单。要让 Snoopy 正常运行,您的服务器的 PHP 版本必须至少为 4,并且它支持 PCRE(Perl Compatible Regular Expressions)以及基本的 LAMP 服务。下载snoopy Snoopy的一些特点: 1 抓取网页内容 fetch2 抓取网页文本内容(去掉HTML标签) fetchtext3 抓取网页链接,表单 fetchlinks fetchform4 支持代理主机 5 支持基本用户名/密码身份验证 6 支持设置 user_agent 、referer(来)、cookies 和 header 内容(头文件) 7 支持浏览器重定向和控制重定向深度 8 可以将网页中的链接扩展为高质量的url(默认) 9 提交数据并返回10的值支持跟踪HTML框架11。支持重定向时,传递cookie需要php4或更高版本。因为是PHP类,所以在服务器不支持curl的时候是最好的选择。类方法:fetch($URI)————这是用于抓取网页内容的方法。
$URI参数是被抓取网页的URL地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。 fetchtext($URI)————该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。 fetchform($URI)————该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。 fetchlinks($URI)————这个方法和fetch()类似,唯一不同的是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。 submit($URI, $formvars)------------ 该方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。 submittext($URI,$formvars)———————————这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回里面的文本内容登录后的网页。
submitlinks($URI)————这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。类属性:(括号内为默认值) $host 要连接的主机 $port 要连接的端口 $proxy_host 要使用的代理主机,如果有的话 $proxy_port 要使用的代理主机端口,如果有的话 $agent 用户agent 伪装 Snoopy v0.1)$referer 信息,如果有 $cookies cookie,如果有 $rawheaders 其他头信息,如果有 $maxredirs 最大重定向次数,0=不允许(5)@ >$offsiteok 是否允许异地重定向。(true)$expandlinks 是否完整链接到完整地址(true)$user 认证用户名,如果有 $pass 认证用户名,如果有$accept http 接受类型( image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)$error 报错的地方,如果有 $response_code 从服务器返回 响应码 $headers 从服务器返回的头信息 $ maxlength 最长返回数据长度 $read_timeout 读取操作超时(需要 PHP 4 Beta 4+)设置为 0 表示无超时 $time d_out 如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+) $maxframes 允许跟踪的最大帧数 $status http 爬取的状态 $temp_dir 目录,用于 Web 服务器可以写入的临时文件 ( /tmp) $curl_path cURL二进制目录,如果没有cURL二进制设置为false 下面是demoinclude "Snoopy.class.php";$snoopy = new Snoopy; $snoopy->proxy_host = "";$snoopy->proxy_port = "8080"; $snoopy->agent = "(兼容;MSIE 4.01;MSN 2.5;AOL 4.0;Windows 98)";$snoopy->referer = " /"; $snoopy->cookies[ "Se ssionID"] = 238472834723489l;$snoopy->cookies["favoriteColor"] = "RED"; $snoopy->rawheaders["Pragma"] = "no-cache"; $ snoopy->maxredirs = 2;$snoopy->offsiteok = false;$snoopy->expandlinks = false;$snoopy->user = "joe";$snoopy->pass = "bloe";if($snoopy->fetchtext ("")){echo " ".htmlspecialchars ($snoopy->results)."n";}elseecho "错误获取文档:".$snoopy->error."n";snoopy采集example< ?php//采集phpchinaset_time_limit(0);require_once("Snoopy.class.php");$snoopy=new Snoopy();//登录论坛$submit_url = "/bbs/logging.php ?action=login";$submit_vars["loginmode"] = "正常";$submit_vars["styleid"] = "1";$submit_vars["cookietime"] = "315360000";$submit_vars["loginfield"] = "username";$submit_vars["username"] = "***"; //你的用户名 $submit_vars["password"] = "*****"; //你的密码 $submit_vars["questionid"] = "0";$submit_vars[" 答案r"] = "";$submit_vars["loginsubmit"] = "Submit";$snoopy->submit($submit_url,$submit_vars);if ($snoopy->results){//获取连接地址$snoopy- > fetchlinks("/bbs");$url=array();$url=$snoopy->resu lts;//print_r($url);foreach($url as $key=>$value){//match /bbs/forumdisplay.php?fid=156&sid=VfcqTR地址为论坛地址 if (!preg_match("/ ^(/bbs/forumdisplay.php?fid=)[0-9]*&sid=[a-zA- Z]{6}/i",$value)){unset($url[$key]);} }//print_r($url);//获取盘子数组$url,循环访问,得到这里是第一个模块第一页的数据 $i=0;foreach ($url as $key=>$value) {if ($i>=1){//Test limit break;}else{ //访问该模块,提取post的连接地址,在正式访问时,需要提取post分页的数据,然后根据分页数据提取post数据 $snoopy=new Snoopy();$ snoopy->fetchlinks($value);$tie=array();$tie[$i]=$snoopy->results;//print_r($tie);//转换数组foreach($tie[$i] as $key=>$value){//垫ch/bbs/viewthread.php?tid=68127&extra=page%3D1&page=1&sid=iBLZfKif (!preg_match("/^(/bbs/viewthread.php?tid=)[0-9]*&extra=page%3D1&page=[ 0-9]*&sid=[a-zA-Z]{6}/i",$value)){unset($tie [$i][$key]);}}//print_r($tie[$ i]);//分类数组,将同一篇文章不同页面的内容放入一个数组 $left='';//连接左边的公共地址 $j=0;$page=array();foreach($ tie[$i] as $key=>$value){$left=substr($value,0,52); $m=0;foreach ($tie[$i] as $pkey=>$pvalue){//重组数组 if (substr($pvalue,0,52)==$left){$page [ $j][$m]=$pvalue;$m++;}}$j++;}//去除重复开始//$page=array_unique($page);只能用于一维数组 $paget[0 ]=$page[0];$nums=count($page);for ($n=1;$n< $nums;$n++){$paget[$n]=array_diff($page[$n], $page[$n-1]);}//去掉多维数组重复值的末尾//去掉数组的空值 unset($page); $page=array();//重新定义页面数组 $page=array_filter($paget);//print_r($page);$u=0;$title=array();$content=array();$ temp='';$tt=array ();foreach ($page as $key=>$value){//外循环,用于一个帖子 if (is_array($value)){foreach ($value as $k1= >$v1){ //页内循环,对于帖子的N页 $snoopy=new Snoopy();$snoopy->fetch($v1);$temp=$snoopy-> results;//读取标题 if (!preg_match_all("/(.*)< /h2>/i",$temp,$tt)){echo "无标题";exit;}else{$title[$u ]=$tt[1][ 1];}unset($tt);//读取内容 if (!preg_match_all("/ ( .*)< /div>/i",$temp,$tt)){ print_r($tt);echo "no content1";exit;}else{foreach ($tt[1] as $c=>$c 2){$content[$u].=$c2;}} }}else{//直接获取页面内容 $snoopy=new Snoopy();$snoopy->fetch($value);$temp =$snoopy->results;//读取标题 if (!preg_match_all("/( .*)< /h2>/i",$temp,$tt)){echo "no title";exit;}else{ $title[$u]=$tt[1][1];}unset($tt);//读取内容 if (!preg_match_all("/ (.*)< /div>/i",$te mp ,$tt)){echo "no content2";exit;}else{foreach ($tt[1] as $c=>$c2){$content[$u].=$c2;} } }$u++;}print_r($content);}$i++;}}else{echo "login failed";exit;}?> PHP采集 类:史努比一直在尝试做一个 PHP采集@ > 计划,但一直没有进展。在网上找了半天,找到了这个类。好像挺有名的~~ Snoopy是一个php类,用来模仿网页浏览器的功能。它可以完成网页内容的获取和传输。表单任务。
官方网站 /???以下是它的一些特点: 1、易抓取网页内容2、易抓取网页文字(去掉HTML代码)3、易网页链接抓取4、支持代理主机5、支持基本用户/密码认证方式6、支持自定义用户代理、referer、cookies和header内容7、支持浏览器重定向和控制深度重定向8、可以将网页中的链接展开成高质量的url(默认)9、方便提交数据并获取返回值10、支持跟踪HTML框架(v0. 92增加) 11、支持重定向时传递cookie 例如抓取链接 ------------------------------ ------------ -----首先我们需要获取登录需要发送哪些字段,目标地址是什么。这里我们使用 snoopy 的 fetchform 来实现这一点。当然也可以直接查看/happy/...的源码来实现,不过这样更方便。到这里,我们已经获取了目标和提交的数据,接下来就是实现模拟登录了。代码如下:
snoopy php网页抓取工具( 网页内部链接有一个不容否认的道理:搜刮引擎爬虫)
网站优化 • 优采云 发表了文章 • 0 个评论 • 95 次浏览 • 2022-03-08 12:09
网页内部链接有一个不容否认的道理:搜刮引擎爬虫)
谈到网页设计,内部链接有一个不可否认的事实:这是不可避免的,毕竟超链接是浏览互联网和从一个页面跳转到另一个页面的主要方式。
谈到网页设计,关于外部链接有一个不可否认的事实:这是不可避免的,毕竟超链接是扫描互联网并从一个网页跳转到另一个网页的主要手段。
它不仅影响 SEO,而且连接到链接的网页形成了人类或机器无法使用的 网站。搜索引擎爬虫只能索引他们能找到的页面,为了找到它们,他们需要链接——与人类没有什么不同。(为什么我们再次将我们的未来托付给机器人?)
这本身应该鼓励任何 网站 管理员在每次创建 网站 时开发适量的外部链接布局。由于对外部链接的依赖,外部链接是 SEO 中最薄弱的武器之一。你是如何使用这些武器获得最佳排名的?
1.保持页面之间的路径短
使您的网页易于查找。无论您是在百度上搜索还是已经到达目的地,都应该不会花太长时间找到您需要的页面。吸取的教训是,Unity 网站 上的两个页面不应跨越三次点击。无论您当前在浏览器中关闭哪个页面,都必须有通往不同页面的短路径。在规划 网站 布局时,请牢记此准则。
2.构建少量可链接的高质量内容
外部链接需要在页面之间传播的权限。使用大量外部链接执行此操作的最佳方法是什么?当然还有很多精彩内容!
页面内和页面外 SEO 的组合为您的 网站 提供尽可能多的高权限页面。拥有它们后,只需战略性地搁置外部链接并使其正常工作即可。
3.间接链接需求的位置
链接充当管道,允许链接从一个页面流向另一个页面,增加后者在搜索引擎眼中的权威。内部链接(从另一个域到您的链接)和外部链接(同一域内的链接)都是它的全部。
网站页面拥有的排名权应该始终是您的外部链接策略的一个元素。哪些页面可以使用更多链接在搜索性能中更明显?哪些页面可以成为良好的链接供应商?
4.不要过度链接
很容易感到不舒服,并创建了太多不必要的外部链接。外部链接策略背后的想法是构建一个布局,让更重要的页面拥有更多权限。请不要因为从需要它的页面引导链接而让自己跌倒。
5.确保您的外部链接是相关的
您知道来自非自然来源的反向链接如何使您在搜索性能中的 网站 位置处于危险之中吗?外部链接也是如此。从网上购物的冬季短裤到没有任何背景的关于量子物理学的 文章 文章只会让用户想知道(尽管在这种情况下,我想知道上下文会有多少上下文)。
6.注意页面链接数
这对搜索引擎蜘蛛来说是无味的后果。他们可以在单个页面上抓取的链接数量没有限制:大约 150 个。根据您拥有的 网站 示例,这个数字可能太低或太高,您无需担心。在任何情况下,越过此限制的链接与爬网对象无关。如果你要在一个页面上有这么多,你可能想考虑它们的顺序并决定要牺牲哪些。其中一些最终会通过无链接果汁,即使它们是无关注链接。
7.不要在 网站 页脚中放置太多链接
页脚是功能性的,这里没有什么不同。无论用户当前在哪里,他们都可以立即访问 网站 上的每个主页。然而,页脚充满了链接,看起来很乱,很难找到用户需要的内容。此外,还应考虑每个页面的爬取限制。
8.精确应用锚文本
锚文本的作用不仅仅是向用户发送关闭新页面的信号。它们也被搜索引擎视为其链接页面的 关键词。用于交流的多个页面关键词优化网站称为关键字,这听起来很不愉快:搜索引擎很难决定哪个页面应该为相关关键字排名。因此,页面排名不高。
当链接到不同的页面时,不要使用交流锚文本来防止关键字的同类相食。
9.不要让你的外部链接“Nofollow”
您可以在链接中保留 rel="nofollow" 属性。这样做会告诉搜索引擎爬虫不要访问链接的页面,也不会传递排名权。一些 网站 管理员试图将他们的外部链接标记为“nofollow”,并对他们的 网站 上的链接流量进行更多操作。
10.在 HTML 中创建您的链接
超链接如下所示:
当您想创建自己的 网站 时,锚文本是您学习的第一件事。然而,HTML 并不是唯一可以用来编写链接的语言。例如,JavaScript 也可以做到。
var str = "锚文本"; var 结果 = str.link("");
问题是,用其他语言制作的链接可能会被搜索引擎抓取,也可能被报告的权限较小,这取决于它们的使用方式。这就是为什么最好保留 HTML 链接。
11.注意不能爬取的链接
可以将链接放在搜索引擎蜘蛛永远找不到的地方。链接注定永远不会被抓取的地方包括:
Flash、Java 或其他插件:蜘蛛无法访问其中的链接。
损坏的 JavaScript 代码:当代码不起作用时,链接也不起作用。
提交表单:爬虫不会尝试在您的 网站 上提交表单。
搜外框:不会在 网站 上搜索爬网对象。
收录具有数百个链接的页面:蜘蛛的抓取限制为 150。
搜索引擎通常也无法抓取 HTML 框架和 iframe 中的链接,尽管训练有素的 网站 管理员可以提供解决方案。
最初,robots.txt 和 robots 元标记可用于防止蜘蛛访问您选择的任何页面。指向被阻止页面的外部链接仅对访问者有用。
12.防止单页和404页
没有外部链接的页面称为死页。它实际上并不指向 网站 上的任何其他页面,这意味着它对于搜索引擎爬虫来说是一条死胡同。这对用户也很不利:他们只能通过按“退出”按钮或手动输入新 URL 来离开这样的页面。扫描网站 也不是什么好方法。 查看全部
snoopy php网页抓取工具(
网页内部链接有一个不容否认的道理:搜刮引擎爬虫)

谈到网页设计,内部链接有一个不可否认的事实:这是不可避免的,毕竟超链接是浏览互联网和从一个页面跳转到另一个页面的主要方式。
谈到网页设计,关于外部链接有一个不可否认的事实:这是不可避免的,毕竟超链接是扫描互联网并从一个网页跳转到另一个网页的主要手段。
它不仅影响 SEO,而且连接到链接的网页形成了人类或机器无法使用的 网站。搜索引擎爬虫只能索引他们能找到的页面,为了找到它们,他们需要链接——与人类没有什么不同。(为什么我们再次将我们的未来托付给机器人?)
这本身应该鼓励任何 网站 管理员在每次创建 网站 时开发适量的外部链接布局。由于对外部链接的依赖,外部链接是 SEO 中最薄弱的武器之一。你是如何使用这些武器获得最佳排名的?
1.保持页面之间的路径短
使您的网页易于查找。无论您是在百度上搜索还是已经到达目的地,都应该不会花太长时间找到您需要的页面。吸取的教训是,Unity 网站 上的两个页面不应跨越三次点击。无论您当前在浏览器中关闭哪个页面,都必须有通往不同页面的短路径。在规划 网站 布局时,请牢记此准则。
2.构建少量可链接的高质量内容
外部链接需要在页面之间传播的权限。使用大量外部链接执行此操作的最佳方法是什么?当然还有很多精彩内容!
页面内和页面外 SEO 的组合为您的 网站 提供尽可能多的高权限页面。拥有它们后,只需战略性地搁置外部链接并使其正常工作即可。
3.间接链接需求的位置
链接充当管道,允许链接从一个页面流向另一个页面,增加后者在搜索引擎眼中的权威。内部链接(从另一个域到您的链接)和外部链接(同一域内的链接)都是它的全部。
网站页面拥有的排名权应该始终是您的外部链接策略的一个元素。哪些页面可以使用更多链接在搜索性能中更明显?哪些页面可以成为良好的链接供应商?
4.不要过度链接
很容易感到不舒服,并创建了太多不必要的外部链接。外部链接策略背后的想法是构建一个布局,让更重要的页面拥有更多权限。请不要因为从需要它的页面引导链接而让自己跌倒。
5.确保您的外部链接是相关的
您知道来自非自然来源的反向链接如何使您在搜索性能中的 网站 位置处于危险之中吗?外部链接也是如此。从网上购物的冬季短裤到没有任何背景的关于量子物理学的 文章 文章只会让用户想知道(尽管在这种情况下,我想知道上下文会有多少上下文)。
6.注意页面链接数
这对搜索引擎蜘蛛来说是无味的后果。他们可以在单个页面上抓取的链接数量没有限制:大约 150 个。根据您拥有的 网站 示例,这个数字可能太低或太高,您无需担心。在任何情况下,越过此限制的链接与爬网对象无关。如果你要在一个页面上有这么多,你可能想考虑它们的顺序并决定要牺牲哪些。其中一些最终会通过无链接果汁,即使它们是无关注链接。
7.不要在 网站 页脚中放置太多链接
页脚是功能性的,这里没有什么不同。无论用户当前在哪里,他们都可以立即访问 网站 上的每个主页。然而,页脚充满了链接,看起来很乱,很难找到用户需要的内容。此外,还应考虑每个页面的爬取限制。
8.精确应用锚文本
锚文本的作用不仅仅是向用户发送关闭新页面的信号。它们也被搜索引擎视为其链接页面的 关键词。用于交流的多个页面关键词优化网站称为关键字,这听起来很不愉快:搜索引擎很难决定哪个页面应该为相关关键字排名。因此,页面排名不高。
当链接到不同的页面时,不要使用交流锚文本来防止关键字的同类相食。
9.不要让你的外部链接“Nofollow”
您可以在链接中保留 rel="nofollow" 属性。这样做会告诉搜索引擎爬虫不要访问链接的页面,也不会传递排名权。一些 网站 管理员试图将他们的外部链接标记为“nofollow”,并对他们的 网站 上的链接流量进行更多操作。
10.在 HTML 中创建您的链接
超链接如下所示:
当您想创建自己的 网站 时,锚文本是您学习的第一件事。然而,HTML 并不是唯一可以用来编写链接的语言。例如,JavaScript 也可以做到。
var str = "锚文本"; var 结果 = str.link("");
问题是,用其他语言制作的链接可能会被搜索引擎抓取,也可能被报告的权限较小,这取决于它们的使用方式。这就是为什么最好保留 HTML 链接。
11.注意不能爬取的链接
可以将链接放在搜索引擎蜘蛛永远找不到的地方。链接注定永远不会被抓取的地方包括:
Flash、Java 或其他插件:蜘蛛无法访问其中的链接。
损坏的 JavaScript 代码:当代码不起作用时,链接也不起作用。
提交表单:爬虫不会尝试在您的 网站 上提交表单。
搜外框:不会在 网站 上搜索爬网对象。
收录具有数百个链接的页面:蜘蛛的抓取限制为 150。
搜索引擎通常也无法抓取 HTML 框架和 iframe 中的链接,尽管训练有素的 网站 管理员可以提供解决方案。
最初,robots.txt 和 robots 元标记可用于防止蜘蛛访问您选择的任何页面。指向被阻止页面的外部链接仅对访问者有用。
12.防止单页和404页
没有外部链接的页面称为死页。它实际上并不指向 网站 上的任何其他页面,这意味着它对于搜索引擎爬虫来说是一条死胡同。这对用户也很不利:他们只能通过按“退出”按钮或手动输入新 URL 来离开这样的页面。扫描网站 也不是什么好方法。
snoopy php网页抓取工具(Snoopy-thePHPnetclientv1.2.4Snoopy的特点分析)
网站优化 • 优采云 发表了文章 • 0 个评论 • 96 次浏览 • 2022-03-05 10:17
史努比-PHP网络客户端v1.2.4
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(返回)、cookies和header内容(头文件)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接展开成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪 HTML 帧
11、支持重定向时传递cookie
需要php4以上就够了。由于是php的一个类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
总结方法:
1 include "Snoopy.class.php";
2 $snoopy = new Snoopy;
3
4 $snoopy->fetchtext("http://www.php.net/");
5 print $snoopy->results;
6
7 $snoopy->fetchlinks("http://www.phpbuilder.com/");
8 print $snoopy->results;
9
10 $submit_url = "http://lnk.ispi.net/texis/scri ... 3B%3B
11
12 $submit_vars["q"] = "amiga";
13 $submit_vars["submit"] = "Search!";
14 $submit_vars["searchhost"] = "Altavista";
15
16 $snoopy->submit($submit_url,$submit_vars);
17 print $snoopy->results;
18
19 $snoopy->maxframes=5;
20 $snoopy->fetch("http://www.ispi.net/");
21 echo "\n";
22 echo htmlentities($snoopy->results[0]);
23 echo htmlentities($snoopy->results[1]);
24 echo htmlentities($snoopy->results[2]);
25 echo "
\n";2627$snoopy->fetchform("");28 打印 $snoopy->results;29 查看全部
snoopy php网页抓取工具(Snoopy-thePHPnetclientv1.2.4Snoopy的特点分析)
史努比-PHP网络客户端v1.2.4
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(返回)、cookies和header内容(头文件)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接展开成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪 HTML 帧
11、支持重定向时传递cookie
需要php4以上就够了。由于是php的一个类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
总结方法:
1 include "Snoopy.class.php";
2 $snoopy = new Snoopy;
3
4 $snoopy->fetchtext("http://www.php.net/");
5 print $snoopy->results;
6
7 $snoopy->fetchlinks("http://www.phpbuilder.com/");
8 print $snoopy->results;
9
10 $submit_url = "http://lnk.ispi.net/texis/scri ... 3B%3B
11
12 $submit_vars["q"] = "amiga";
13 $submit_vars["submit"] = "Search!";
14 $submit_vars["searchhost"] = "Altavista";
15
16 $snoopy->submit($submit_url,$submit_vars);
17 print $snoopy->results;
18
19 $snoopy->maxframes=5;
20 $snoopy->fetch("http://www.ispi.net/");
21 echo "\n";
22 echo htmlentities($snoopy->results[0]);
23 echo htmlentities($snoopy->results[1]);
24 echo htmlentities($snoopy->results[2]);
25 echo "
\n";2627$snoopy->fetchform("");28 打印 $snoopy->results;29
snoopy php网页抓取工具(Snoopy的一些特点及LAMP服务都支持的服务方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 106 次浏览 • 2022-02-23 07:10
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
一、史努比的一些特点:
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
二、类方法:
获取($URI)
———–
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
——————-
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
提交($URI,$formvars)
—————————-
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
—————————–
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
——————-
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(Snoopy的一些特点及LAMP服务都支持的服务方法)
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
一、史努比的一些特点:
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
二、类方法:
获取($URI)
———–
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
——————-
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
提交($URI,$formvars)
—————————-
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
—————————–
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
——————-
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具( PHP4BetaorSnoopy4orPHP3.0.12.类方法:方便抓取网页)
网站优化 • 优采云 发表了文章 • 0 个评论 • 90 次浏览 • 2022-02-21 17:11
PHP4BetaorSnoopy4orPHP3.0.12.类方法:方便抓取网页)
/**
* @name Snoopy手册中文版
* @author 毛毛虫 wangchong1985@gmail.com
* @version Snoopy - the PHP net client v1.2.2
* @link http://www.wangchong.org
* @since 2008-04-27
*/ <br />名称:<br /><br /> Snoopy - the PHP net client v1.2.2<br /> <br />概要:<br /><br /> include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetchtext("http://www.php.net/");
print $snoopy->results;
$snoopy->fetchlinks("http://www.phpbuilder.com/");
print $snoopy->results;
$submit_url = "http://lnk.ispi.net/texis/scri ... 3B%3B
$submit_vars["q"] = "amiga";
$submit_vars["submit"] = "Search!";
$submit_vars["searchhost"] = "Altavista";
$snoopy->submit($submit_url,$submit_vars);
print $snoopy->results;
$snoopy->maxframes=5;
$snoopy->fetch("http://www.ispi.net/");
echo "/n";
echo htmlentities($snoopy->results[0]);
echo htmlentities($snoopy->results[1]);
echo htmlentities($snoopy->results[2]);
echo "
/ n“; $ snoopy-> fetchform(”“);打印$ snoopy->结果;
说明:
snoopy是什么?
snoopy是一个php类,用于模仿Web浏览器的功能,可以完成获取Web内容并发送表单的任务。
史努比的一些功能:
* *方便捕获网页
*方便捕获文本内容(删除HTML标记)
*方便捕获网页的链接
*支持代理主机
*支持基本用户名/密码验证
*支持set user_agent,referer,cookie和header内容(头文件)
*支持浏览器转向,并控制转向深度
*可以将网页中的链接扩展为高质量的URL(默认)
*促进数据并获取返回值
*支持跟踪HTML框架(v 0. 92添加)
*支持重新转向(V 0. 92增加)
要求:
snoopy需要php pcre(perl兼容的正则表达式),
哪个商店是php 3. 0. 9和up。对于读取超时支持,它需要
PHP 4 beta 4或更高版本。 Snoopy是通过PHP 3. 0. 1 2.
测试
方法:
获取($ uri)
-----------
这是用于捕获网页内容的方法。
$ uri参数是网页的URL地址。
结果存储在$以下 - >结果中。
如果您爬行是一个框架,snoopy会将每个框架存储到数组中,然后存入$ this->结果。
fetchtext($ uri)
--------------
此方法类似于fetch(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回网页中的文本内容。
fetchform($ uri)
--------------
此方法类似于fetch(),唯一的区别是此方法删除HTML标记和其他不相关的数据,只返回网页中的表单内容(表单)。
fetchlinks($ uri)
----------------
此方法类似于fetch(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回到网页中的链接(链接)。
默认情况下,将自动完成相对链接,转换为完整的URL。
提交($ uri,$ formvars)
-------------------
此方法将确认表单发送到$ URL指定的链接地址。 $ formvars是一系列存储的表单个参数。
submittext($ uri,$ formvars)
--------------------------
此方法类似于提交(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回登录中的文本内容。
submitlinks($ uri)
----------------
此方法类似于提交(),唯一的区别是此方法删除HTML标记和其他不相关的数据,只返回网页中的链接(链接)。
默认情况下,将自动完成相对链接,转换为完整的URL。
类属性:(括号中的默认值)
$ host连接主机
$端口连接端口
$ proxy_host由代理主机使用,如果有的话,
$ proxy_port由代理主机端口使用,如果有的话,
$代理用户代理伪装(snoopy v 0. 1)
$ cremer rogue信息,如果有的话,
$ cookie cookie,如果有的话
$ rawheaders其他标题信息,如果有的话,
$ maxredirs最大重定向,0 =不允许(5)
$ offsiteok是否允许从现场重定向。 (true)
$ odernlinks完全解决了完整的地址(true)
$用户认证用户名,如果有的话,
$ pass身份验证用户名,如果有的话, 查看全部
snoopy php网页抓取工具(
PHP4BetaorSnoopy4orPHP3.0.12.类方法:方便抓取网页)
/**
* @name Snoopy手册中文版
* @author 毛毛虫 wangchong1985@gmail.com
* @version Snoopy - the PHP net client v1.2.2
* @link http://www.wangchong.org
* @since 2008-04-27
*/ <br />名称:<br /><br /> Snoopy - the PHP net client v1.2.2<br /> <br />概要:<br /><br /> include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetchtext("http://www.php.net/");
print $snoopy->results;
$snoopy->fetchlinks("http://www.phpbuilder.com/");
print $snoopy->results;
$submit_url = "http://lnk.ispi.net/texis/scri ... 3B%3B
$submit_vars["q"] = "amiga";
$submit_vars["submit"] = "Search!";
$submit_vars["searchhost"] = "Altavista";
$snoopy->submit($submit_url,$submit_vars);
print $snoopy->results;
$snoopy->maxframes=5;
$snoopy->fetch("http://www.ispi.net/");
echo "/n";
echo htmlentities($snoopy->results[0]);
echo htmlentities($snoopy->results[1]);
echo htmlentities($snoopy->results[2]);
echo "
/ n“; $ snoopy-> fetchform(”“);打印$ snoopy->结果;
说明:
snoopy是什么?
snoopy是一个php类,用于模仿Web浏览器的功能,可以完成获取Web内容并发送表单的任务。
史努比的一些功能:
* *方便捕获网页
*方便捕获文本内容(删除HTML标记)
*方便捕获网页的链接
*支持代理主机
*支持基本用户名/密码验证
*支持set user_agent,referer,cookie和header内容(头文件)
*支持浏览器转向,并控制转向深度
*可以将网页中的链接扩展为高质量的URL(默认)
*促进数据并获取返回值
*支持跟踪HTML框架(v 0. 92添加)
*支持重新转向(V 0. 92增加)
要求:
snoopy需要php pcre(perl兼容的正则表达式),
哪个商店是php 3. 0. 9和up。对于读取超时支持,它需要
PHP 4 beta 4或更高版本。 Snoopy是通过PHP 3. 0. 1 2.
测试
方法:
获取($ uri)
-----------
这是用于捕获网页内容的方法。
$ uri参数是网页的URL地址。
结果存储在$以下 - >结果中。
如果您爬行是一个框架,snoopy会将每个框架存储到数组中,然后存入$ this->结果。
fetchtext($ uri)
--------------
此方法类似于fetch(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回网页中的文本内容。
fetchform($ uri)
--------------
此方法类似于fetch(),唯一的区别是此方法删除HTML标记和其他不相关的数据,只返回网页中的表单内容(表单)。
fetchlinks($ uri)
----------------
此方法类似于fetch(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回到网页中的链接(链接)。
默认情况下,将自动完成相对链接,转换为完整的URL。
提交($ uri,$ formvars)
-------------------
此方法将确认表单发送到$ URL指定的链接地址。 $ formvars是一系列存储的表单个参数。
submittext($ uri,$ formvars)
--------------------------
此方法类似于提交(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回登录中的文本内容。
submitlinks($ uri)
----------------
此方法类似于提交(),唯一的区别是此方法删除HTML标记和其他不相关的数据,只返回网页中的链接(链接)。
默认情况下,将自动完成相对链接,转换为完整的URL。
类属性:(括号中的默认值)
$ host连接主机
$端口连接端口
$ proxy_host由代理主机使用,如果有的话,
$ proxy_port由代理主机端口使用,如果有的话,
$代理用户代理伪装(snoopy v 0. 1)
$ cremer rogue信息,如果有的话,
$ cookie cookie,如果有的话
$ rawheaders其他标题信息,如果有的话,
$ maxredirs最大重定向,0 =不允许(5)
$ offsiteok是否允许从现场重定向。 (true)
$ odernlinks完全解决了完整的地址(true)
$用户认证用户名,如果有的话,
$ pass身份验证用户名,如果有的话,
snoopy php网页抓取工具(Snoopy模拟浏览器获取网页内容和发送表单的方法和使用方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 117 次浏览 • 2022-02-21 17:09
Snoopy 是一个模拟浏览器获取网页内容和发送表单的 php采集 类。
以下是一些史努比功能:
易于抓取网页内容
易于抓取页面文本(去除 html 标签)
易于抓取页内链接
支持代理爬取
支持基本的用户名和密码认证
支持设置user-agent、referer、cookies和header内容
支持浏览器转向,控制转向深度
将页面上的链接转化为高质量的链接
轻松提交数据并获取返回值
可以跟踪 HTML 帧
支持重定向时传递 cookie
史努比类,方法:
获取($URI)
用于抓取网页内容的方法。$URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的文本内容。
获取表单($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。
类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 要使用的代理主机,如果有的话
$proxy_port 要使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies,如果有的话
$rawheaders 其他头文件,如果有的话
$maxredirs 最大重定向数,0 = 不允许 (5)
$offsiteok 是否允许异地重定向。(真的)
$expandlinks 是否完成指向完整地址的链接(true)
$user 验证用户名,如果有的话
$pass 认证用户名,如果有的话 查看全部
snoopy php网页抓取工具(Snoopy模拟浏览器获取网页内容和发送表单的方法和使用方法)
Snoopy 是一个模拟浏览器获取网页内容和发送表单的 php采集 类。
以下是一些史努比功能:
易于抓取网页内容
易于抓取页面文本(去除 html 标签)
易于抓取页内链接
支持代理爬取
支持基本的用户名和密码认证
支持设置user-agent、referer、cookies和header内容
支持浏览器转向,控制转向深度
将页面上的链接转化为高质量的链接
轻松提交数据并获取返回值
可以跟踪 HTML 帧
支持重定向时传递 cookie
史努比类,方法:
获取($URI)
用于抓取网页内容的方法。$URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的文本内容。
获取表单($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。
类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 要使用的代理主机,如果有的话
$proxy_port 要使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies,如果有的话
$rawheaders 其他头文件,如果有的话
$maxredirs 最大重定向数,0 = 不允许 (5)
$offsiteok 是否允许异地重定向。(真的)
$expandlinks 是否完成指向完整地址的链接(true)
$user 验证用户名,如果有的话
$pass 认证用户名,如果有的话
snoopy php网页抓取工具( 老是/php/Snoopy.gz本地下载类类特征)
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2022-02-21 16:09
老是/php/Snoopy.gz本地下载类类特征)
史努比PHP版网络客户端提供本地下载
更新时间:2008-04-15 21:29:47 作者:
snoopy是一个很好的模仿网络客户端的php类,但是本地下载的很少,国外下载又麻烦又慢,所以弄了这个网站给大家下载
史努比在magpierss中使用,这让我有点兴趣研究这个dong dong。在 SF 上,我找到了这个源代码。它其实是一个类,但不要笑,功能很强大。
官方介绍,我翻译了(汗……最近一直在做翻译)
snoopy 是一个模仿网络浏览器功能的 php 类,它可以完成获取网页内容和发送表单的任务。
以下是它的一些特点:
1、轻松抓取网页内容
2、轻松抓取网页文本(去掉HTML代码)
3、方便抓取网页的链接
4、支持代理主机
5、支持基本用户/密码认证方式
6、支持自定义用户代理、referer、cookies和header内容
7、支持浏览器转向和控制转向深度
8、 可以将网页中的链接扩展成高质量的url(默认)
9、方便提交数据并获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持重定向时传递cookies
下面是一个简单的例子,比如我们抓取我博客的文字
^_^,还不错,比如抢链接
哎,效果不错,还有我们需要的url,没有/blog/read.php/85.htm这样的东西。
还要为以后测试的人提交数据。. .
元马/php/Snoopy-1.2.3.tar.gz本地下载 查看全部
snoopy php网页抓取工具(
老是/php/Snoopy.gz本地下载类类特征)
史努比PHP版网络客户端提供本地下载
更新时间:2008-04-15 21:29:47 作者:
snoopy是一个很好的模仿网络客户端的php类,但是本地下载的很少,国外下载又麻烦又慢,所以弄了这个网站给大家下载
史努比在magpierss中使用,这让我有点兴趣研究这个dong dong。在 SF 上,我找到了这个源代码。它其实是一个类,但不要笑,功能很强大。
官方介绍,我翻译了(汗……最近一直在做翻译)
snoopy 是一个模仿网络浏览器功能的 php 类,它可以完成获取网页内容和发送表单的任务。
以下是它的一些特点:
1、轻松抓取网页内容
2、轻松抓取网页文本(去掉HTML代码)
3、方便抓取网页的链接
4、支持代理主机
5、支持基本用户/密码认证方式
6、支持自定义用户代理、referer、cookies和header内容
7、支持浏览器转向和控制转向深度
8、 可以将网页中的链接扩展成高质量的url(默认)
9、方便提交数据并获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持重定向时传递cookies
下面是一个简单的例子,比如我们抓取我博客的文字
^_^,还不错,比如抢链接
哎,效果不错,还有我们需要的url,没有/blog/read.php/85.htm这样的东西。
还要为以后测试的人提交数据。. .
元马/php/Snoopy-1.2.3.tar.gz本地下载
snoopy php网页抓取工具( PHP正则表达式的几种形式介绍及几种形式详解)
网站优化 • 优采云 发表了文章 • 0 个评论 • 72 次浏览 • 2022-02-19 12:02
PHP正则表达式的几种形式介绍及几种形式详解)
PHP中如何利用正则爬取页面中的URL
更新时间:2016-08-09 08:47:55 发布者:daisy
从页面中抓取页面中的所有链接,当然,使用PHP正则表达式是最方便的方式。写正则表达式,首先要总结一下模式,那么页面中的链接会有多少种形式呢?让我们来看看。
前言
链接,也称为超链接,是从一个元素(文本、图像、视频等)到另一个元素(文本、图像、视频等)的链接。网页中的链接一般分为三种,一种是绝对URL超链接,即一个页面的完整路径;另一种是相对URL超链接,一般链接到同一个网站的其他页面;是页面内的超链接,通常链接到同一页面内的其他位置。
搞清楚链接的类型,就知道抓取链接主要有绝对URL超链接和相对URL超链接。要编写正确的正则表达式,我们必须了解我们要查找的对象的模式。
首先,绝对链接,也称为 URL(统一资源定位器),用于标识 Internet 上的唯一资源。URL的结构由三部分组成:协议、服务器名、路径和文件名。
协议是告诉浏览器如何处理要打开的文件的标识符,最常见的是http协议。本文只考虑 HTTP 协议。至于其他的https、ftp、mailto、telnet协议等,也可以根据需要添加。
服务器名是告诉浏览器如何到达服务器的方式,通常是域名或IP地址,有时还有端口号(默认为80)。在FTP协议中,用户名和密码也可以包括在内,本文未涉及)。经过考虑的。
路径和文件名,通常用 / 分隔,表示文件的路径和文件本身的名称。如果没有具体的文件名,则访问该文件夹中的默认文件(可以在服务器端设置)。
现在很清楚,爬网的绝对链接的典型形式可以概括为
每个部分可以使用的字符范围都有明确的规定。有关详细信息,请参阅 RFC1738。然后就可以写正则表达式了。
/(http|https):\/\/([\w\d\-_]+[\.\w\d\-_]+)[:\d+]?([\/]?[\w\/\.]+)/i
解释如下: 查看全部
snoopy php网页抓取工具(
PHP正则表达式的几种形式介绍及几种形式详解)
PHP中如何利用正则爬取页面中的URL
更新时间:2016-08-09 08:47:55 发布者:daisy
从页面中抓取页面中的所有链接,当然,使用PHP正则表达式是最方便的方式。写正则表达式,首先要总结一下模式,那么页面中的链接会有多少种形式呢?让我们来看看。
前言
链接,也称为超链接,是从一个元素(文本、图像、视频等)到另一个元素(文本、图像、视频等)的链接。网页中的链接一般分为三种,一种是绝对URL超链接,即一个页面的完整路径;另一种是相对URL超链接,一般链接到同一个网站的其他页面;是页面内的超链接,通常链接到同一页面内的其他位置。
搞清楚链接的类型,就知道抓取链接主要有绝对URL超链接和相对URL超链接。要编写正确的正则表达式,我们必须了解我们要查找的对象的模式。
首先,绝对链接,也称为 URL(统一资源定位器),用于标识 Internet 上的唯一资源。URL的结构由三部分组成:协议、服务器名、路径和文件名。
协议是告诉浏览器如何处理要打开的文件的标识符,最常见的是http协议。本文只考虑 HTTP 协议。至于其他的https、ftp、mailto、telnet协议等,也可以根据需要添加。
服务器名是告诉浏览器如何到达服务器的方式,通常是域名或IP地址,有时还有端口号(默认为80)。在FTP协议中,用户名和密码也可以包括在内,本文未涉及)。经过考虑的。
路径和文件名,通常用 / 分隔,表示文件的路径和文件本身的名称。如果没有具体的文件名,则访问该文件夹中的默认文件(可以在服务器端设置)。
现在很清楚,爬网的绝对链接的典型形式可以概括为
每个部分可以使用的字符范围都有明确的规定。有关详细信息,请参阅 RFC1738。然后就可以写正则表达式了。
/(http|https):\/\/([\w\d\-_]+[\.\w\d\-_]+)[:\d+]?([\/]?[\w\/\.]+)/i
解释如下:
snoopy php网页抓取工具( Snoopy采集类的一些特点及特点以及LAMP采集方法介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 131 次浏览 • 2022-02-16 02:11
Snoopy采集类的一些特点及特点以及LAMP采集方法介绍)
Snoopy PHP采集类使用说明
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和提交表单的功能。
Snoopy 要求您的服务器具有 PHP 4 或更高版本,并支持 PCRE(Perl 兼容正则表达式)以及基本的 LAMP 服务。
一、Snoopy采集类的一些特点:
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
二、Snoopy采集类方法:
1、获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每一帧跟踪到一个数组中,然后存储
$this->结果。
2、fetchtext($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
3、fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
4、fetchlinks($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
5、提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
6、提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
7、提交链接($URI)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、Snoopy采集类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(
Snoopy采集类的一些特点及特点以及LAMP采集方法介绍)
Snoopy PHP采集类使用说明
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和提交表单的功能。
Snoopy 要求您的服务器具有 PHP 4 或更高版本,并支持 PCRE(Perl 兼容正则表达式)以及基本的 LAMP 服务。
一、Snoopy采集类的一些特点:
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
二、Snoopy采集类方法:
1、获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每一帧跟踪到一个数组中,然后存储
$this->结果。
2、fetchtext($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
3、fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
4、fetchlinks($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
5、提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
6、提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
7、提交链接($URI)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、Snoopy采集类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(构建搜索引擎/网络蜘蛛组合的最佳实践说明书(1))
网站优化 • 优采云 发表了文章 • 0 个评论 • 211 次浏览 • 2022-02-15 04:06
关闭。这个问题需要更加集中。它目前不接受答案。
想要改善这个问题?更新问题,使其仅关注编辑此帖子的一个问题。
关闭 6 年。
改进这个问题
重要提示:以下问题无意破坏任何数据版权。所有抓取和保存的数据都直接链接到源。
对于客户,我正在采集有关构建搜索引擎/网络蜘蛛组合的信息。我确实有一些对内部链接的网页进行深度索引的经验。我也有从网页抓取数据的经验。但是,在这种情况下,数量超出了我的经验,因此我希望从最佳实践中获得一些知识和见解。
首先需要说明的是,客户端会提供一个网站的列表,会被索引。所以,它实际上是一个垂直搜索引擎。结果只需要一个链接、标题和描述(就像谷歌如何显示结果)。这个搜索引擎的主要目的是让访问者更容易搜索大量的网站和结果以找到他们正在寻找的东西。所以:网站A 收录一堆链接 -> 保存所有带有元数据的链接。
其次,有一个更具体的搜索引擎。还索引所有指向(称为)文章 的链接,这些链接分布在许多较小的站点上,其中 文章比垂直搜索引擎中的站点 @> 少。原因很简单:这些页面上的 文章 必须尽可能详细地刮掉。这就是第一个问题所在:为每个网站写一个爬虫会花费很多时间,例如需要采集的数据有:城市名、文章日期、< @文章 标题。所以:网站B比网站A收录更详细的文章s,我们将对这些文章s进行索引并抓取有用的数据。
我确实有一个可行的方法,但它涉及为每个人编写一个刮板网站,事实上,这是我现在能想到的唯一解决方案。由于每个页面的 DOM 是完全不同的,我没有看到一个选项来构建一个万无一失的算法来搜索 DOM 并“知道”页面的哪一部分是位置(但是......如果你可以匹配文本,一种可能性)用于完整的城市列表)。
我想到了几件事:
垂直搜索引擎
对于垂直搜索引擎,这很简单,我们有一个需要索引的网页列表,抓取所有匹配正则表达式的页面并将这些 URL 的完整列表存储在数据库中应该非常简单。我可能想将保存页面数据(元描述、标题等)分离到一个单独的进程中以加快索引速度。由于 网站 有匹配结果/文章,因此该搜索引擎中可能存在重复数据。我还没有决定如何过滤这些重复,可能是关于 文章 标头,但是重复的标头在数据来自的业务部门之间差异很大,但不同 文章
页面抓取
只要我们知道与 URL 匹配的正则表达式,就可以用类似的方式对“待抓取”页面进行索引。我们可以将 URL 列表保留在数据库中,并使用单独的进程运行所有单独的页面,基于 URL,爬虫现在应该使用什么正则表达式来匹配页面上所需的详细信息并将其写入数据库就足够了。网站已准备好对结果进行索引,所以我认为应该有一种方法可以创建一种爬取算法,该算法知道如何读取页面,而不必完全匹配正则表达式。就像我之前说的:如果我有一个完整的城市名称列表,则必须有一个选项来使用搜索算法来获取城市名称,而不必说城市名称位于“#content .about .city”中。
数据冗余
爬虫/爬虫的一个重要部分是防止它索引重复数据。我想要做的是跟踪爬虫何时开始索引 网站 以及索引何时结束,然后我还跟踪 文章 的“最后更新时间”(基于 文章 的 URL ) 并删除任何早于爬网开始时间的 文章。因为据我所知,这些 文章 已经不存在了。
使用页面抓取器更容易实现数据冗余,因为我的客户列出了“良好来源”(阅读:具有唯一 文章 的页面)。数据冗余对于垂直搜索引擎来说更加困难,因为被索引的站点具有从“好来源”中自我选择的手动搜索。因此,多个站点可以从同一来源中进行选择。
如何使结果可搜索
除了如何爬取页面之外,这是一个问题,因为一旦所有数据都存储在数据库中,就需要能够高速搜索。与一些竞争相比,我的客户发现要保存的数据量仍然未知,与我的客户相比,该记录建议大约 10,000 条较小的记录(垂直搜索),可能更详细的 4,000 条较大的信息记录。
我知道与您可能正在使用的某些数据库相比,这仍然是一个很小的数字。但最终,用户最多可以使用 10 到 20 个搜索字段来查找他们正在寻找的内容。由于高流量和大量搜索,我可以想象使用常规 MySQL 查询进行搜索不是一个聪明的主意。
到目前为止,我已经找到了 SphinxSearch 和 ElasticSearch。我没有使用过它们中的任何一个,也没有真正研究过两者的可能性,我唯一知道的是两者都应该在数据量大和大型搜索查询中表现良好。
综上所述
综上所述,这是我的问题的简短列表:
有没有一种简单的方法可以创建匹配 DOM 数据的搜索算法,而无需指定内容所在的确切 div?我应该拆分抓取 URL 并保存页面标题/描述以提高速度,抓取页面(链接、标题和描述)的最佳做法是什么?是否有针对 PHP 的开箱即用解决方案,可以在数据库中找到(可能)重复数据(即使存在细微差异,例如:如果 80% 匹配 -> 标记为重复)以创建面向未来的搜索数据引擎的最佳方法是什么(请记住,随着 网站 流量和搜索请求的增加,数据量可能会增加)
我希望我弄清楚了一切,对不起这么多文字。我想这确实表明我花了一些时间试图自己解决问题。 查看全部
snoopy php网页抓取工具(构建搜索引擎/网络蜘蛛组合的最佳实践说明书(1))
关闭。这个问题需要更加集中。它目前不接受答案。
想要改善这个问题?更新问题,使其仅关注编辑此帖子的一个问题。
关闭 6 年。
改进这个问题
重要提示:以下问题无意破坏任何数据版权。所有抓取和保存的数据都直接链接到源。
对于客户,我正在采集有关构建搜索引擎/网络蜘蛛组合的信息。我确实有一些对内部链接的网页进行深度索引的经验。我也有从网页抓取数据的经验。但是,在这种情况下,数量超出了我的经验,因此我希望从最佳实践中获得一些知识和见解。
首先需要说明的是,客户端会提供一个网站的列表,会被索引。所以,它实际上是一个垂直搜索引擎。结果只需要一个链接、标题和描述(就像谷歌如何显示结果)。这个搜索引擎的主要目的是让访问者更容易搜索大量的网站和结果以找到他们正在寻找的东西。所以:网站A 收录一堆链接 -> 保存所有带有元数据的链接。
其次,有一个更具体的搜索引擎。还索引所有指向(称为)文章 的链接,这些链接分布在许多较小的站点上,其中 文章比垂直搜索引擎中的站点 @> 少。原因很简单:这些页面上的 文章 必须尽可能详细地刮掉。这就是第一个问题所在:为每个网站写一个爬虫会花费很多时间,例如需要采集的数据有:城市名、文章日期、< @文章 标题。所以:网站B比网站A收录更详细的文章s,我们将对这些文章s进行索引并抓取有用的数据。
我确实有一个可行的方法,但它涉及为每个人编写一个刮板网站,事实上,这是我现在能想到的唯一解决方案。由于每个页面的 DOM 是完全不同的,我没有看到一个选项来构建一个万无一失的算法来搜索 DOM 并“知道”页面的哪一部分是位置(但是......如果你可以匹配文本,一种可能性)用于完整的城市列表)。
我想到了几件事:
垂直搜索引擎
对于垂直搜索引擎,这很简单,我们有一个需要索引的网页列表,抓取所有匹配正则表达式的页面并将这些 URL 的完整列表存储在数据库中应该非常简单。我可能想将保存页面数据(元描述、标题等)分离到一个单独的进程中以加快索引速度。由于 网站 有匹配结果/文章,因此该搜索引擎中可能存在重复数据。我还没有决定如何过滤这些重复,可能是关于 文章 标头,但是重复的标头在数据来自的业务部门之间差异很大,但不同 文章
页面抓取
只要我们知道与 URL 匹配的正则表达式,就可以用类似的方式对“待抓取”页面进行索引。我们可以将 URL 列表保留在数据库中,并使用单独的进程运行所有单独的页面,基于 URL,爬虫现在应该使用什么正则表达式来匹配页面上所需的详细信息并将其写入数据库就足够了。网站已准备好对结果进行索引,所以我认为应该有一种方法可以创建一种爬取算法,该算法知道如何读取页面,而不必完全匹配正则表达式。就像我之前说的:如果我有一个完整的城市名称列表,则必须有一个选项来使用搜索算法来获取城市名称,而不必说城市名称位于“#content .about .city”中。
数据冗余
爬虫/爬虫的一个重要部分是防止它索引重复数据。我想要做的是跟踪爬虫何时开始索引 网站 以及索引何时结束,然后我还跟踪 文章 的“最后更新时间”(基于 文章 的 URL ) 并删除任何早于爬网开始时间的 文章。因为据我所知,这些 文章 已经不存在了。
使用页面抓取器更容易实现数据冗余,因为我的客户列出了“良好来源”(阅读:具有唯一 文章 的页面)。数据冗余对于垂直搜索引擎来说更加困难,因为被索引的站点具有从“好来源”中自我选择的手动搜索。因此,多个站点可以从同一来源中进行选择。
如何使结果可搜索
除了如何爬取页面之外,这是一个问题,因为一旦所有数据都存储在数据库中,就需要能够高速搜索。与一些竞争相比,我的客户发现要保存的数据量仍然未知,与我的客户相比,该记录建议大约 10,000 条较小的记录(垂直搜索),可能更详细的 4,000 条较大的信息记录。
我知道与您可能正在使用的某些数据库相比,这仍然是一个很小的数字。但最终,用户最多可以使用 10 到 20 个搜索字段来查找他们正在寻找的内容。由于高流量和大量搜索,我可以想象使用常规 MySQL 查询进行搜索不是一个聪明的主意。
到目前为止,我已经找到了 SphinxSearch 和 ElasticSearch。我没有使用过它们中的任何一个,也没有真正研究过两者的可能性,我唯一知道的是两者都应该在数据量大和大型搜索查询中表现良好。
综上所述
综上所述,这是我的问题的简短列表:
有没有一种简单的方法可以创建匹配 DOM 数据的搜索算法,而无需指定内容所在的确切 div?我应该拆分抓取 URL 并保存页面标题/描述以提高速度,抓取页面(链接、标题和描述)的最佳做法是什么?是否有针对 PHP 的开箱即用解决方案,可以在数据库中找到(可能)重复数据(即使存在细微差异,例如:如果 80% 匹配 -> 标记为重复)以创建面向未来的搜索数据引擎的最佳方法是什么(请记住,随着 网站 流量和搜索请求的增加,数据量可能会增加)
我希望我弄清楚了一切,对不起这么多文字。我想这确实表明我花了一些时间试图自己解决问题。
snoopy php网页抓取工具(网站php抓取工具推荐活动:更多优惠gt(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2022-02-12 01:04
阿里云>云栖社区>主题图>W>网站php爬虫
推荐活动:
更多优惠>
当前话题:网站php爬虫加入采集
相关话题:
网站php爬虫相关博文看更多博文
用PHP爬取页面并分析
作者:Tech Fatty 1207人查看评论:04年前
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。一、使用 Snoopy.class.php 在页面上抓取一个可爱的类名。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。1)我现在去抓一个
阅读全文
抓取某个 网站 站点的记录
作者:Pure Bug Paper 997 浏览评论:05年前
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。非常好; 具体的操作手册和其他的东西这里就不说了。有很多在线搜索。以下是遇到的主要问题:
阅读全文
抓取某个 网站 站点的记录
作者:zting Technology 822 浏览评论:05年前
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。非常好; 具体的操作手册等这里就不说了。有很多在线搜索。以下是遇到的问题: 软件下载位置
阅读全文
网站的robots文件是用自动生成工具的URL写的
作者:科技小先锋 1069人查看评论:04年前
现在网站 站长会在robots.txt 中编写各种规则,以便有更多的网站收录 内容被各大搜索引擎收录。@网站自动生成:网址如下:同时引用robots的基本写法:robots.tx
阅读全文
10 个最受欢迎的开源网页设计工具
作者:zting科技881查看评论:04年前
原文链接:网页设计师的 10 个最佳开源工具 许多开源网页设计工具具有与付费工具相同的强大功能并且是免费的。使用这些工具不仅可以省钱,还可以帮助您做好日常工作,在这个文章,我们将与大
阅读全文
SEO工具大全
作者:技术小牛 2013 人浏览评论:04 年前
推荐工具:查域名IP:IP 反向查:http
阅读全文
通过网络安全工具 Burp 套件 (二)) 查找 网站 中的 XSS 漏洞
作者:apache9153 人浏览评论:03年前
一、背景作者在6月份录制了一个关于XSS跨站漏洞加强网络安全的视频教程。有许多实际案例需要涵盖。漏洞挖掘案例分为人工挖掘、工具挖掘、代码审计三个部分。, 手动挖矿的参考地址是为了快速找出网站(一)中可能存在的XSS漏洞
阅读全文
教你如何在LinuxMac系统下使用命令行工具创建网站备份
作者:沃克武松 1446人浏览评论:04年前
创建网站备份应该是网站管理员最重要的日常任务之一。但现实是,备份这一步往往被很多人忽视,这意味着仍然有很多网络管理员的安全意识不高。所有 Linux/Mac 用户都可以使用命令行工具以零经济成本创建网站备份。如果您不使用 Linux/Mac,请关注我
阅读全文
网站php爬虫相关问答题
【javascript学习全家桶】934道JavaScript热门问题,上百位阿里巴巴技术专家答疑解惑
作者:管理贝贝5207 浏览评论:13年前
阿里极客公益活动:也许你只是因为一个问题而夜战,也许你迷茫只求答案,也许你因为一个未知数而绞尽脑汁,所以他们来了,阿里巴巴技术专家来云栖Q&A为你解答技术问题他们用自己手中的技术来帮助用户成长。本次活动特邀100阿里巴巴科技
阅读全文 查看全部
snoopy php网页抓取工具(网站php抓取工具推荐活动:更多优惠gt(组图))
阿里云>云栖社区>主题图>W>网站php爬虫

推荐活动:
更多优惠>
当前话题:网站php爬虫加入采集
相关话题:
网站php爬虫相关博文看更多博文
用PHP爬取页面并分析


作者:Tech Fatty 1207人查看评论:04年前
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。一、使用 Snoopy.class.php 在页面上抓取一个可爱的类名。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。1)我现在去抓一个
阅读全文
抓取某个 网站 站点的记录


作者:Pure Bug Paper 997 浏览评论:05年前
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。非常好; 具体的操作手册和其他的东西这里就不说了。有很多在线搜索。以下是遇到的主要问题:
阅读全文
抓取某个 网站 站点的记录


作者:zting Technology 822 浏览评论:05年前
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。非常好; 具体的操作手册等这里就不说了。有很多在线搜索。以下是遇到的问题: 软件下载位置
阅读全文
网站的robots文件是用自动生成工具的URL写的


作者:科技小先锋 1069人查看评论:04年前
现在网站 站长会在robots.txt 中编写各种规则,以便有更多的网站收录 内容被各大搜索引擎收录。@网站自动生成:网址如下:同时引用robots的基本写法:robots.tx
阅读全文
10 个最受欢迎的开源网页设计工具


作者:zting科技881查看评论:04年前
原文链接:网页设计师的 10 个最佳开源工具 许多开源网页设计工具具有与付费工具相同的强大功能并且是免费的。使用这些工具不仅可以省钱,还可以帮助您做好日常工作,在这个文章,我们将与大
阅读全文
SEO工具大全


作者:技术小牛 2013 人浏览评论:04 年前
推荐工具:查域名IP:IP 反向查:http
阅读全文
通过网络安全工具 Burp 套件 (二)) 查找 网站 中的 XSS 漏洞


作者:apache9153 人浏览评论:03年前
一、背景作者在6月份录制了一个关于XSS跨站漏洞加强网络安全的视频教程。有许多实际案例需要涵盖。漏洞挖掘案例分为人工挖掘、工具挖掘、代码审计三个部分。, 手动挖矿的参考地址是为了快速找出网站(一)中可能存在的XSS漏洞
阅读全文
教你如何在LinuxMac系统下使用命令行工具创建网站备份

作者:沃克武松 1446人浏览评论:04年前
创建网站备份应该是网站管理员最重要的日常任务之一。但现实是,备份这一步往往被很多人忽视,这意味着仍然有很多网络管理员的安全意识不高。所有 Linux/Mac 用户都可以使用命令行工具以零经济成本创建网站备份。如果您不使用 Linux/Mac,请关注我
阅读全文
网站php爬虫相关问答题
【javascript学习全家桶】934道JavaScript热门问题,上百位阿里巴巴技术专家答疑解惑

作者:管理贝贝5207 浏览评论:13年前
阿里极客公益活动:也许你只是因为一个问题而夜战,也许你迷茫只求答案,也许你因为一个未知数而绞尽脑汁,所以他们来了,阿里巴巴技术专家来云栖Q&A为你解答技术问题他们用自己手中的技术来帮助用户成长。本次活动特邀100阿里巴巴科技
阅读全文
snoopy php网页抓取工具(,PHP实现爬虫的方式做个总结(一)_)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2022-02-12 01:03
PHP爬取网页和解析HTML的常用方法总结
PHP爬取网页和解析HTML的常用方法总结
第一财经站长站,站长之家为你整理了PHP爬取网页和解析HTML常用方法的相关内容。
概览
爬虫是我们在做程序的时候经常会遇到的一个功能。 PHP有很多开源的爬虫工具,比如snoopy。这些开源爬虫工具通常可以帮助我们完成大部分功能,但在某些情况下,我们需要自己实现一个爬虫。本文文章实现PHP爬虫方式的总结。
爬虫PHP实现的主要方法
1.file() 函数
2.file_get_contents() 函数
3.fopen()->fread()->fclose()方法
4.卷曲法
5.fsockopen()函数,socket方法
6.使用开源工具,例如:snoopy
PHP 解析 XML 或 HTML 的主要方式
1.正则表达式
2.PHP DOMDocument 对象
3.插件如:PHP Simple HTML DOM Parser
总结
这里简单总结一下PHP实现爬虫的方式。这个设计有很多内容。后面我会总结一下PHP解析HTML和XML的方式。
以上是PHP爬取网页和解析HTML常用方法总结的详细介绍。欢迎大家对PHP爬取网页和解析HTML总结内容的常用方法提出宝贵意见 查看全部
snoopy php网页抓取工具(,PHP实现爬虫的方式做个总结(一)_)
PHP爬取网页和解析HTML的常用方法总结
PHP爬取网页和解析HTML的常用方法总结
第一财经站长站,站长之家为你整理了PHP爬取网页和解析HTML常用方法的相关内容。
概览
爬虫是我们在做程序的时候经常会遇到的一个功能。 PHP有很多开源的爬虫工具,比如snoopy。这些开源爬虫工具通常可以帮助我们完成大部分功能,但在某些情况下,我们需要自己实现一个爬虫。本文文章实现PHP爬虫方式的总结。
爬虫PHP实现的主要方法
1.file() 函数
2.file_get_contents() 函数
3.fopen()->fread()->fclose()方法
4.卷曲法
5.fsockopen()函数,socket方法
6.使用开源工具,例如:snoopy
PHP 解析 XML 或 HTML 的主要方式
1.正则表达式
2.PHP DOMDocument 对象
3.插件如:PHP Simple HTML DOM Parser
总结
这里简单总结一下PHP实现爬虫的方式。这个设计有很多内容。后面我会总结一下PHP解析HTML和XML的方式。
以上是PHP爬取网页和解析HTML常用方法总结的详细介绍。欢迎大家对PHP爬取网页和解析HTML总结内容的常用方法提出宝贵意见
snoopy php网页抓取工具(snoopy()、file_get_contents(.class.phpsnoopy)
网站优化 • 优采云 发表了文章 • 0 个评论 • 85 次浏览 • 2022-02-05 15:08
curl()、file_get_contents()、snoopy.class.php,这三个用于远程页面爬取或者采集的工具,它们的功能是等价的,各自的优缺点是什么,下面介绍一下:
史努比类.php
Snoopy 是使用 fsockopen 的自研类,效率高,不需要服务器特定的配置支持。可以在普通的虚拟主机上使用,但是经常会出现问题。官方下载地址:
Snoopy是一个模拟浏览器功能的php类,可以获取网页内容和发送表单。
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签) fetchtext
3、 抓取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(来)、cookies和header内容(头文件)
7、支持浏览器重定向,可以控制重定向深度
8、 可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML帧
11、支持重定向时传递cookie
需要php4或更高版本就足够了。既然是php的一个类,就不需要扩展支持了。服务器不支持 curl 时的最佳选择。
随附的:
史努比中文说明书:
使用示例:
史努比的缺陷和 CURL 的威力:
文件获取内容()
file_get_contents 是 fsockopen 函数的简单封装,效率稍低,但是抓取成功率很高,所以我一般在 snoopy 有问题的时候给他打电话。5.0.0 增加了对context的支持,有了context,他还可以发送header信息,自定义user agent,referer,cookies都有。5.1.0 添加了 offset 和 maxlen 参数以只读部分文件。
卷曲()
curl一般用于爬取网页,二是获取或发布数据,三是在PHP中实现多线程任务。
最厉害的,它几乎可以模拟浏览器的方方面面,几乎可以造假。效率也很高,支持多线程,但是需要开启curl扩展。
cURL 是一个使用 URL 语法传输文件和数据的工具,支持多种协议,例如 HTTP、FTP、TELNET 等。PHP 还支持 cURL 库,我们经常使用它进行远程页面抓取和 采集 .
它还支持从断点恢复 Range 的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.spiegel.de/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
/**
*But as noted before if the server doesn't honor this header but sends the whole file curl will download all of it. E.g. http://www.php.net ignores the header. But you can (in addition) set a write function callback and abort the request when more data is received, e.g.
* php 5.3+ only
* use function writefn($ch, $chunk) { ... } for earlier versions
*/
$writefn = function($ch, $chunk) {
static $data='';
static $limit = 500; // 500 bytes, it's only a test
$len = strlen($data) + strlen($chunk);
if ($len >= $limit ) {
$data .= substr($chunk, 0, $limit-strlen($data));
echo strlen($data) , ' ', $data;
return -1;
}
$data .= $chunk;
return strlen($chunk);
};
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.php.net/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);
$result = curl_exec($ch);
curl_close($ch);
使用教程地址: 查看全部
snoopy php网页抓取工具(snoopy()、file_get_contents(.class.phpsnoopy)
curl()、file_get_contents()、snoopy.class.php,这三个用于远程页面爬取或者采集的工具,它们的功能是等价的,各自的优缺点是什么,下面介绍一下:
史努比类.php
Snoopy 是使用 fsockopen 的自研类,效率高,不需要服务器特定的配置支持。可以在普通的虚拟主机上使用,但是经常会出现问题。官方下载地址:
Snoopy是一个模拟浏览器功能的php类,可以获取网页内容和发送表单。
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签) fetchtext
3、 抓取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(来)、cookies和header内容(头文件)
7、支持浏览器重定向,可以控制重定向深度
8、 可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML帧
11、支持重定向时传递cookie
需要php4或更高版本就足够了。既然是php的一个类,就不需要扩展支持了。服务器不支持 curl 时的最佳选择。
随附的:
史努比中文说明书:
使用示例:
史努比的缺陷和 CURL 的威力:
文件获取内容()
file_get_contents 是 fsockopen 函数的简单封装,效率稍低,但是抓取成功率很高,所以我一般在 snoopy 有问题的时候给他打电话。5.0.0 增加了对context的支持,有了context,他还可以发送header信息,自定义user agent,referer,cookies都有。5.1.0 添加了 offset 和 maxlen 参数以只读部分文件。
卷曲()
curl一般用于爬取网页,二是获取或发布数据,三是在PHP中实现多线程任务。
最厉害的,它几乎可以模拟浏览器的方方面面,几乎可以造假。效率也很高,支持多线程,但是需要开启curl扩展。
cURL 是一个使用 URL 语法传输文件和数据的工具,支持多种协议,例如 HTTP、FTP、TELNET 等。PHP 还支持 cURL 库,我们经常使用它进行远程页面抓取和 采集 .
它还支持从断点恢复 Range 的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.spiegel.de/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
/**
*But as noted before if the server doesn't honor this header but sends the whole file curl will download all of it. E.g. http://www.php.net ignores the header. But you can (in addition) set a write function callback and abort the request when more data is received, e.g.
* php 5.3+ only
* use function writefn($ch, $chunk) { ... } for earlier versions
*/
$writefn = function($ch, $chunk) {
static $data='';
static $limit = 500; // 500 bytes, it's only a test
$len = strlen($data) + strlen($chunk);
if ($len >= $limit ) {
$data .= substr($chunk, 0, $limit-strlen($data));
echo strlen($data) , ' ', $data;
return -1;
}
$data .= $chunk;
return strlen($chunk);
};
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.php.net/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);
$result = curl_exec($ch);
curl_close($ch);
使用教程地址:
snoopy php网页抓取工具(Snoopy的一些特点以及LAMP服务都支持的服务方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2022-04-19 09:09
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
一、史努比的一些功能
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持curl时的最佳选择
二、类方法
获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
fetchlinks($URI) 这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
三、类属性(括号内是默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(Snoopy的一些特点以及LAMP服务都支持的服务方法)
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
一、史努比的一些功能
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持curl时的最佳选择
二、类方法
获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
fetchlinks($URI) 这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
三、类属性(括号内是默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(PHP类Snoopy是什么?PHP语言中功能强大的一些特点)
网站优化 • 优采云 发表了文章 • 0 个评论 • 87 次浏览 • 2022-04-10 16:15
大家都知道,在PHP语言中,有很多强大的功能可以帮助程序员完成各种功能需求。今天要给大家介绍的是PHP类Snoopy的一些相关知识。
什么是 PHP 类 Snoopy?
Snoopy 是一个模仿网络浏览器功能的 php 类,可以执行诸如获取网页内容和发送表单等任务。
PHP 类 Snoopy 的一些特性:
* 轻松抓取网页内容
* 轻松抓取网页文本内容(去除HTML标签)
* 方便抓取网页的链接
* 支持代理主机
* 支持基本的用户名/密码认证
* 支持设置user_agent、referer(来)、cookies和header内容(头文件)
* 支持浏览器转向,可以控制转向深度
* 可以将网页中的链接扩展为高质量的网址(默认)
* 方便提交数据并获取返回值
* 支持跟踪HTML框架(v0.92增加)
* 重定向时支持传递cookie(v0.92增加)
PHP类Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
它提供以下接口或方法:
获取($URI)
这个方法是爬取网页的内容,$URI是要爬取的网页的URL,爬取的结果存放在$this->results中。如果抓取帧,每帧都会被抓取,结果会保存到数组中。
获取文本($URI)
此方法与 fetch() 非常相似,只是它的结果是文本,去掉了 HTML 标记和其他无关信息。
fetchform($URI)
该方法只返回抓取网页上的表单元素。
获取链接($URI)
该方法只返回被抓取网页上的链接。默认链接都是收录域名的链接。
提交($URI,$formvars)
此方法将表单提交到指定的 $URI。 $formvars 是要传递的表单变量数组。
提交文本($URI,$formvars)
这个方法和submit()基本一样,但是它返回文本,去掉了html标签和其他无关数据。
提交链接($URI)
此方法返回一个链接。
以上都是对PHP类Snoopy的介绍,希望对大家有所帮助。 查看全部
snoopy php网页抓取工具(PHP类Snoopy是什么?PHP语言中功能强大的一些特点)
大家都知道,在PHP语言中,有很多强大的功能可以帮助程序员完成各种功能需求。今天要给大家介绍的是PHP类Snoopy的一些相关知识。
什么是 PHP 类 Snoopy?
Snoopy 是一个模仿网络浏览器功能的 php 类,可以执行诸如获取网页内容和发送表单等任务。
PHP 类 Snoopy 的一些特性:
* 轻松抓取网页内容
* 轻松抓取网页文本内容(去除HTML标签)
* 方便抓取网页的链接
* 支持代理主机
* 支持基本的用户名/密码认证
* 支持设置user_agent、referer(来)、cookies和header内容(头文件)
* 支持浏览器转向,可以控制转向深度
* 可以将网页中的链接扩展为高质量的网址(默认)
* 方便提交数据并获取返回值
* 支持跟踪HTML框架(v0.92增加)
* 重定向时支持传递cookie(v0.92增加)
PHP类Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
它提供以下接口或方法:
获取($URI)
这个方法是爬取网页的内容,$URI是要爬取的网页的URL,爬取的结果存放在$this->results中。如果抓取帧,每帧都会被抓取,结果会保存到数组中。
获取文本($URI)
此方法与 fetch() 非常相似,只是它的结果是文本,去掉了 HTML 标记和其他无关信息。
fetchform($URI)
该方法只返回抓取网页上的表单元素。
获取链接($URI)
该方法只返回被抓取网页上的链接。默认链接都是收录域名的链接。
提交($URI,$formvars)
此方法将表单提交到指定的 $URI。 $formvars 是要传递的表单变量数组。
提交文本($URI,$formvars)
这个方法和submit()基本一样,但是它返回文本,去掉了html标签和其他无关数据。
提交链接($URI)
此方法返回一个链接。
以上都是对PHP类Snoopy的介绍,希望对大家有所帮助。
snoopy php网页抓取工具(做抓取前,记得把php.ini中的max_execution)
网站优化 • 优采云 发表了文章 • 0 个评论 • 176 次浏览 • 2022-04-09 03:36
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。
一、 使用 Snoopy.class.php 抓取页面
一个很可爱的班级名字。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。
1)我要抓取网站的一个列表页的内容,我要抓取的是全国医院信息内容,如下图:
2)我自然是复制了URL地址,用Snoopy类抓取前10页的内容,并将内容放到本地,在本地创建了一个html文件,用于后面的分析。
$snoopy=new Snoopy();
//医院list页面
for($i = 1; $i fetch($url);
file_put_contents("web/page/$i.html", $snoopy->results);
}
echo 'success';
3)很奇怪,返回的内容不是国家内容,而是上海的相关内容
4) 后来怀疑里面可能设置了一个cookie,然后用firebug查了一下,里面有一个惊人的内幕
5)请求中也放入了cookie的值,加上了一个设置语句$snoopy->cookies["_area_"],情况就大不一样了,顺利返回全国信息。
$snoopy=new Snoopy();
//医院list页面
$snoopy->cookies["_area_"] = '{"provinceId":"all","provinceName":"全国","cityId":"all","cityName":"不限"}';
for($i = 1; $i fetch($url);
$html = $snoopy->results;
}
2)使用phpQuery获取节点信息,如下图DOM结构:
使用一些phpQuery方法,结合DOM结构读取各个医院信息的URL地址。
for($i = 1; $i attr('href')); //医院详情
}
}
3)根据读取的URL地址列表,抓取指定页面。
$detailIndex = 1;
for($i = 1; $i results);
$detailIndex++;
}
}
FQ工具下载:
克服障碍.rar
演示下载:
关于 Snoopy 类的一些注意事项:
类方法
获取($URI)
这是用于抓取网页内容的方法。
$URI 参数是被抓取网页的 URL 地址。
获取的结果存储在 $this->results 中。
如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的文本内容。
获取表单($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。
默认情况下,相对链接将自动完成为完整的 URL。
类属性
$主机
连接主机
$端口
连接端口
$proxy_host
使用的代理主机(如果有)
$proxy_port
要使用的代理主机端口(如果有)
$代理
用户代理伪装(史努比 v0.1)
$推荐人
到达信息,如果有的话
$cookies
饼干,如果有的话
$原创头文件
其他标题信息(如果有)
$maxredirs
最大重定向数,0 = 不允许 (5)
$offsiteok
是否允许异地重定向。(真的)
$展开链接
是否完成链接到完整地址(true)
$用户
身份验证用户名(如果有)
$通行证
身份验证用户名(如果有)
$接受
http 接受类型(image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)
$错误
错误在哪里,如果有的话
$response_code
服务器返回的响应码
$标头
从服务器返回的标头
$最大长度
最大返回数据长度
$read_timeout
读取操作超时(需要 PHP 4 Beta 4+),设置为 0 表示无超时
$timed_out
如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+)
$最大帧数
允许跟踪的最大帧数
$状态 查看全部
snoopy php网页抓取工具(做抓取前,记得把php.ini中的max_execution)
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。
一、 使用 Snoopy.class.php 抓取页面
一个很可爱的班级名字。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。
1)我要抓取网站的一个列表页的内容,我要抓取的是全国医院信息内容,如下图:
2)我自然是复制了URL地址,用Snoopy类抓取前10页的内容,并将内容放到本地,在本地创建了一个html文件,用于后面的分析。
$snoopy=new Snoopy();
//医院list页面
for($i = 1; $i fetch($url);
file_put_contents("web/page/$i.html", $snoopy->results);
}
echo 'success';
3)很奇怪,返回的内容不是国家内容,而是上海的相关内容
4) 后来怀疑里面可能设置了一个cookie,然后用firebug查了一下,里面有一个惊人的内幕
5)请求中也放入了cookie的值,加上了一个设置语句$snoopy->cookies["_area_"],情况就大不一样了,顺利返回全国信息。
$snoopy=new Snoopy();
//医院list页面
$snoopy->cookies["_area_"] = '{"provinceId":"all","provinceName":"全国","cityId":"all","cityName":"不限"}';
for($i = 1; $i fetch($url);
$html = $snoopy->results;
}
2)使用phpQuery获取节点信息,如下图DOM结构:
使用一些phpQuery方法,结合DOM结构读取各个医院信息的URL地址。
for($i = 1; $i attr('href')); //医院详情
}
}
3)根据读取的URL地址列表,抓取指定页面。
$detailIndex = 1;
for($i = 1; $i results);
$detailIndex++;
}
}
FQ工具下载:
克服障碍.rar
演示下载:
关于 Snoopy 类的一些注意事项:
类方法
获取($URI)
这是用于抓取网页内容的方法。
$URI 参数是被抓取网页的 URL 地址。
获取的结果存储在 $this->results 中。
如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的文本内容。
获取表单($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。
默认情况下,相对链接将自动完成为完整的 URL。
类属性
$主机
连接主机
$端口
连接端口
$proxy_host
使用的代理主机(如果有)
$proxy_port
要使用的代理主机端口(如果有)
$代理
用户代理伪装(史努比 v0.1)
$推荐人
到达信息,如果有的话
$cookies
饼干,如果有的话
$原创头文件
其他标题信息(如果有)
$maxredirs
最大重定向数,0 = 不允许 (5)
$offsiteok
是否允许异地重定向。(真的)
$展开链接
是否完成链接到完整地址(true)
$用户
身份验证用户名(如果有)
$通行证
身份验证用户名(如果有)
$接受
http 接受类型(image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)
$错误
错误在哪里,如果有的话
$response_code
服务器返回的响应码
$标头
从服务器返回的标头
$最大长度
最大返回数据长度
$read_timeout
读取操作超时(需要 PHP 4 Beta 4+),设置为 0 表示无超时
$timed_out
如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+)
$最大帧数
允许跟踪的最大帧数
$状态
snoopy php网页抓取工具(PHP采集类Snoopy.class.php介绍以及下载是一个)
网站优化 • 优采云 发表了文章 • 0 个评论 • 152 次浏览 • 2022-04-07 19:02
PHP采集类Snoopy.class.php介绍及下载
Snoopy是一个非常强大的PHP类,可以用来模拟浏览器完成获取网页内容和发送表单的任务。下面详细介绍Snoopy.class.php的特性和一些常用的用法。
官方网站:(无法打开可以使用的国外浏览器网站)
下载地址:
本站下载地址:PHP采集库Snoopy.class.php下载
以下是史努比的一些功能:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(return)、cookies和header内容(头文件)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持重定向时传递cookie
备注:可以使用Snoopy.class.php 要求php4 或以上。由于是php类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
下面是一些常用的类方法的介绍:
获取($URI)
这是用于抓取网页内容的方法。 $URI参数是爬取网页的URL地址,爬取结果存放在$this->results中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(PHP采集类Snoopy.class.php介绍以及下载是一个)
PHP采集类Snoopy.class.php介绍及下载
Snoopy是一个非常强大的PHP类,可以用来模拟浏览器完成获取网页内容和发送表单的任务。下面详细介绍Snoopy.class.php的特性和一些常用的用法。
官方网站:(无法打开可以使用的国外浏览器网站)
下载地址:
本站下载地址:PHP采集库Snoopy.class.php下载
以下是史努比的一些功能:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(return)、cookies和header内容(头文件)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持重定向时传递cookie
备注:可以使用Snoopy.class.php 要求php4 或以上。由于是php类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
下面是一些常用的类方法的介绍:
获取($URI)
这是用于抓取网页内容的方法。 $URI参数是爬取网页的URL地址,爬取结果存放在$this->results中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(snoopy_get_contents()、file..php优缺点curl)
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2022-03-28 19:10
源码下载 DD cURL、文件获取内容、snoopy.class.php 优缺点 curl()、file_get_contents(),这三个用于远程页面爬取的工具还是采集,它们的功能是等价的,到底是优缺点如下: snoopy fsockopen开发的一个类,效率高,不需要服务器特定的配置支持。可以在普通的虚拟主机上使用,但是经常会出现问题。官网:/projects Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy的特点: 1、 抓取网页内容fetch 2、 抓取网页文本内容(去掉HTML标签) fetchtext 3、 抓取网页链接,form fetchlinks fetchform 4、@ >支持代理主机5、支持基本用户名/密码认证6、支持设置user_agent、referer(返回)、cookies headercontent(头文件)7、支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、@ > 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。
file_get_contents() file_get_contents fsockopen函数打包简单,效率稍低,但是捕获成功率很高,所以我一般在snoopy有问题的时候给他打电话。增加了对context的支持,有了context,他还可以发送header信息,自定义user agent,referer,cookies都有。添加了 offset maxlen 参数以只读文件的一部分。curl() 是最强大的,几乎可以模拟浏览器的每个方面,几乎就像是真实的一样。效率也很高,支持多线程,但是需要开启curl扩展。cURL 是一个使用 URL 语法规范传输文件和数据的工具,支持多种协议等。PHP 支持 cURL 库,我们经常使用它进行远程页面抓取和 采集。源码下载 DD 有的cms会用到curl功能,需要服务器开启CURL扩展。具体方法如下: 1、将PHP的ext目录下的三个文件:、、、和三个文件复制到系统system32目录下。;extension=去掉前面的分号3、重启IIS或者Apache4、@>测试代码 查看全部
snoopy php网页抓取工具(snoopy_get_contents()、file..php优缺点curl)
源码下载 DD cURL、文件获取内容、snoopy.class.php 优缺点 curl()、file_get_contents(),这三个用于远程页面爬取的工具还是采集,它们的功能是等价的,到底是优缺点如下: snoopy fsockopen开发的一个类,效率高,不需要服务器特定的配置支持。可以在普通的虚拟主机上使用,但是经常会出现问题。官网:/projects Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy的特点: 1、 抓取网页内容fetch 2、 抓取网页文本内容(去掉HTML标签) fetchtext 3、 抓取网页链接,form fetchlinks fetchform 4、@ >支持代理主机5、支持基本用户名/密码认证6、支持设置user_agent、referer(返回)、cookies headercontent(头文件)7、支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、@ > 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。支持浏览器重定向,并且可以控制重定向深度8、可以将网页中的链接展开成高质量的url(默认)9、提交数据并获取返回值10、支持跟踪HTML frame11、 支持重定向时传递 cookie 需要 php4 或更高版本。由于是php的一个类,所以不需要扩展,服务器也不支持curl的最佳选择。
file_get_contents() file_get_contents fsockopen函数打包简单,效率稍低,但是捕获成功率很高,所以我一般在snoopy有问题的时候给他打电话。增加了对context的支持,有了context,他还可以发送header信息,自定义user agent,referer,cookies都有。添加了 offset maxlen 参数以只读文件的一部分。curl() 是最强大的,几乎可以模拟浏览器的每个方面,几乎就像是真实的一样。效率也很高,支持多线程,但是需要开启curl扩展。cURL 是一个使用 URL 语法规范传输文件和数据的工具,支持多种协议等。PHP 支持 cURL 库,我们经常使用它进行远程页面抓取和 采集。源码下载 DD 有的cms会用到curl功能,需要服务器开启CURL扩展。具体方法如下: 1、将PHP的ext目录下的三个文件:、、、和三个文件复制到系统system32目录下。;extension=去掉前面的分号3、重启IIS或者Apache4、@>测试代码
snoopy php网页抓取工具(最好的选择的特点及选择的方法介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 110 次浏览 • 2022-03-26 09:02
Snoopy是一个php类,用来模拟浏览器的一些简单功能,可以获取网页内容,发送表单等操作。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。由于是php类,不需要扩展,所以在服务器不支持curl的情况下是最好的选择
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(coming)、COOKIEs和header content(header)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML帧
11、支持重定向时传递 COOKIE
史努比类下载地址:
史努比类方法:
获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
史努比类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$COOKIEs COOKIE,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(最好的选择的特点及选择的方法介绍)
Snoopy是一个php类,用来模拟浏览器的一些简单功能,可以获取网页内容,发送表单等操作。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。由于是php类,不需要扩展,所以在服务器不支持curl的情况下是最好的选择
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(coming)、COOKIEs和header content(header)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML帧
11、支持重定向时传递 COOKIE
史努比类下载地址:
史努比类方法:
获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
史努比类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$COOKIEs COOKIE,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(如何验证码,简单说下:$URI的验证码本方法介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 87 次浏览 • 2022-03-25 05:14
关于如何验证代码,简单说一下:
先用普通浏览器查看页面,找到验证码对应的sessionid,
注意 sessionid 和验证码值,
那就用 snoopy 来伪装吧。
原理:因为是同一个sessionid,所以得到的验证码和第一次输入的一样。
有时我们可能需要伪造更多的东西,史努比完全为我们考虑了这一点
proxy_host = "www.fruicms.com";
$snoopy->proxy_port = "8080"; //使用代理
$snoopy->maxredirs = 2; //重定向次数
$snoopy->expandlinks = true; //是否补全链接 在采集的时候经常用到
// 例如链接为 /images/taoav.gif 可改为它的全链接 http://www.taoav.com/images/taoav.gif
$snoopy->maxframes = 5 //允许的最大框架数
//注意抓取框架的时候 $snoopy->results 返回的是一个数组
$snoopy->error //返回报错信息
?>
二、类方法:
获取($URI)
———–
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
——————-
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
提交($URI,$formvars)
—————————-
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
—————————–
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
——————-
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。(true)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(如何验证码,简单说下:$URI的验证码本方法介绍)
关于如何验证代码,简单说一下:
先用普通浏览器查看页面,找到验证码对应的sessionid,
注意 sessionid 和验证码值,
那就用 snoopy 来伪装吧。
原理:因为是同一个sessionid,所以得到的验证码和第一次输入的一样。
有时我们可能需要伪造更多的东西,史努比完全为我们考虑了这一点
proxy_host = "www.fruicms.com";
$snoopy->proxy_port = "8080"; //使用代理
$snoopy->maxredirs = 2; //重定向次数
$snoopy->expandlinks = true; //是否补全链接 在采集的时候经常用到
// 例如链接为 /images/taoav.gif 可改为它的全链接 http://www.taoav.com/images/taoav.gif
$snoopy->maxframes = 5 //允许的最大框架数
//注意抓取框架的时候 $snoopy->results 返回的是一个数组
$snoopy->error //返回报错信息
?>
二、类方法:
获取($URI)
———–
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
——————-
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
提交($URI,$formvars)
—————————-
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
—————————–
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
——————-
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。(true)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(php采集利器——模拟浏览器类snoopy应用by笨二十一)
网站优化 • 优采云 发表了文章 • 0 个评论 • 125 次浏览 • 2022-03-17 15:34
php采集Weapon--模拟浏览器式snoopy应用 笨二十一凌晨1点20分在PHP下发布,Web技术研究php页面资料采集,无意中发现Snoopy是一个类,snoopy是用php编写的一个php类,用来模拟浏览器功能。它可以模拟访问,向需要登录的Web服务器提交表单,并提供过滤信息的功能,让您可以根据需要获取所需的信息。 Snoopy官方网站:/projects/snoopy/Snoopy是一个模拟浏览器功能的php类,可以获取网页内容和发送表单。要让 Snoopy 正常运行,您的服务器的 PHP 版本必须至少为 4,并且它支持 PCRE(Perl Compatible Regular Expressions)以及基本的 LAMP 服务。下载snoopy Snoopy的一些特点: 1 抓取网页内容 fetch2 抓取网页文本内容(去掉HTML标签) fetchtext3 抓取网页链接,表单 fetchlinks fetchform4 支持代理主机 5 支持基本用户名/密码身份验证 6 支持设置 user_agent 、referer(来)、cookies 和 header 内容(头文件) 7 支持浏览器重定向和控制重定向深度 8 可以将网页中的链接扩展为高质量的url(默认) 9 提交数据并返回10的值支持跟踪HTML框架11。支持重定向时,传递cookie需要php4或更高版本。因为是PHP类,所以在服务器不支持curl的时候是最好的选择。类方法:fetch($URI)————这是用于抓取网页内容的方法。
$URI参数是被抓取网页的URL地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。 fetchtext($URI)————该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。 fetchform($URI)————该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。 fetchlinks($URI)————这个方法和fetch()类似,唯一不同的是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。 submit($URI, $formvars)------------ 该方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。 submittext($URI,$formvars)———————————这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回里面的文本内容登录后的网页。
submitlinks($URI)————这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。类属性:(括号内为默认值) $host 要连接的主机 $port 要连接的端口 $proxy_host 要使用的代理主机,如果有的话 $proxy_port 要使用的代理主机端口,如果有的话 $agent 用户agent 伪装 Snoopy v0.1)$referer 信息,如果有 $cookies cookie,如果有 $rawheaders 其他头信息,如果有 $maxredirs 最大重定向次数,0=不允许(5)@ >$offsiteok 是否允许异地重定向。(true)$expandlinks 是否完整链接到完整地址(true)$user 认证用户名,如果有 $pass 认证用户名,如果有$accept http 接受类型( image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)$error 报错的地方,如果有 $response_code 从服务器返回 响应码 $headers 从服务器返回的头信息 $ maxlength 最长返回数据长度 $read_timeout 读取操作超时(需要 PHP 4 Beta 4+)设置为 0 表示无超时 $time d_out 如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+) $maxframes 允许跟踪的最大帧数 $status http 爬取的状态 $temp_dir 目录,用于 Web 服务器可以写入的临时文件 ( /tmp) $curl_path cURL二进制目录,如果没有cURL二进制设置为false 下面是demoinclude "Snoopy.class.php";$snoopy = new Snoopy; $snoopy->proxy_host = "";$snoopy->proxy_port = "8080"; $snoopy->agent = "(兼容;MSIE 4.01;MSN 2.5;AOL 4.0;Windows 98)";$snoopy->referer = " /"; $snoopy->cookies[ "Se ssionID"] = 238472834723489l;$snoopy->cookies["favoriteColor"] = "RED"; $snoopy->rawheaders["Pragma"] = "no-cache"; $ snoopy->maxredirs = 2;$snoopy->offsiteok = false;$snoopy->expandlinks = false;$snoopy->user = "joe";$snoopy->pass = "bloe";if($snoopy->fetchtext ("")){echo " ".htmlspecialchars ($snoopy->results)."n";}elseecho "错误获取文档:".$snoopy->error."n";snoopy采集example< ?php//采集phpchinaset_time_limit(0);require_once("Snoopy.class.php");$snoopy=new Snoopy();//登录论坛$submit_url = "/bbs/logging.php ?action=login";$submit_vars["loginmode"] = "正常";$submit_vars["styleid"] = "1";$submit_vars["cookietime"] = "315360000";$submit_vars["loginfield"] = "username";$submit_vars["username"] = "***"; //你的用户名 $submit_vars["password"] = "*****"; //你的密码 $submit_vars["questionid"] = "0";$submit_vars[" 答案r"] = "";$submit_vars["loginsubmit"] = "Submit";$snoopy->submit($submit_url,$submit_vars);if ($snoopy->results){//获取连接地址$snoopy- > fetchlinks("/bbs");$url=array();$url=$snoopy->resu lts;//print_r($url);foreach($url as $key=>$value){//match /bbs/forumdisplay.php?fid=156&sid=VfcqTR地址为论坛地址 if (!preg_match("/ ^(/bbs/forumdisplay.php?fid=)[0-9]*&sid=[a-zA- Z]{6}/i",$value)){unset($url[$key]);} }//print_r($url);//获取盘子数组$url,循环访问,得到这里是第一个模块第一页的数据 $i=0;foreach ($url as $key=>$value) {if ($i>=1){//Test limit break;}else{ //访问该模块,提取post的连接地址,在正式访问时,需要提取post分页的数据,然后根据分页数据提取post数据 $snoopy=new Snoopy();$ snoopy->fetchlinks($value);$tie=array();$tie[$i]=$snoopy->results;//print_r($tie);//转换数组foreach($tie[$i] as $key=>$value){//垫ch/bbs/viewthread.php?tid=68127&extra=page%3D1&page=1&sid=iBLZfKif (!preg_match("/^(/bbs/viewthread.php?tid=)[0-9]*&extra=page%3D1&page=[ 0-9]*&sid=[a-zA-Z]{6}/i",$value)){unset($tie [$i][$key]);}}//print_r($tie[$ i]);//分类数组,将同一篇文章不同页面的内容放入一个数组 $left='';//连接左边的公共地址 $j=0;$page=array();foreach($ tie[$i] as $key=>$value){$left=substr($value,0,52); $m=0;foreach ($tie[$i] as $pkey=>$pvalue){//重组数组 if (substr($pvalue,0,52)==$left){$page [ $j][$m]=$pvalue;$m++;}}$j++;}//去除重复开始//$page=array_unique($page);只能用于一维数组 $paget[0 ]=$page[0];$nums=count($page);for ($n=1;$n< $nums;$n++){$paget[$n]=array_diff($page[$n], $page[$n-1]);}//去掉多维数组重复值的末尾//去掉数组的空值 unset($page); $page=array();//重新定义页面数组 $page=array_filter($paget);//print_r($page);$u=0;$title=array();$content=array();$ temp='';$tt=array ();foreach ($page as $key=>$value){//外循环,用于一个帖子 if (is_array($value)){foreach ($value as $k1= >$v1){ //页内循环,对于帖子的N页 $snoopy=new Snoopy();$snoopy->fetch($v1);$temp=$snoopy-> results;//读取标题 if (!preg_match_all("/(.*)< /h2>/i",$temp,$tt)){echo "无标题";exit;}else{$title[$u ]=$tt[1][ 1];}unset($tt);//读取内容 if (!preg_match_all("/ ( .*)< /div>/i",$temp,$tt)){ print_r($tt);echo "no content1";exit;}else{foreach ($tt[1] as $c=>$c 2){$content[$u].=$c2;}} }}else{//直接获取页面内容 $snoopy=new Snoopy();$snoopy->fetch($value);$temp =$snoopy->results;//读取标题 if (!preg_match_all("/( .*)< /h2>/i",$temp,$tt)){echo "no title";exit;}else{ $title[$u]=$tt[1][1];}unset($tt);//读取内容 if (!preg_match_all("/ (.*)< /div>/i",$te mp ,$tt)){echo "no content2";exit;}else{foreach ($tt[1] as $c=>$c2){$content[$u].=$c2;} } }$u++;}print_r($content);}$i++;}}else{echo "login failed";exit;}?> PHP采集 类:史努比一直在尝试做一个 PHP采集@ > 计划,但一直没有进展。在网上找了半天,找到了这个类。好像挺有名的~~ Snoopy是一个php类,用来模仿网页浏览器的功能。它可以完成网页内容的获取和传输。表单任务。
官方网站 /???以下是它的一些特点: 1、易抓取网页内容2、易抓取网页文字(去掉HTML代码)3、易网页链接抓取4、支持代理主机5、支持基本用户/密码认证方式6、支持自定义用户代理、referer、cookies和header内容7、支持浏览器重定向和控制深度重定向8、可以将网页中的链接展开成高质量的url(默认)9、方便提交数据并获取返回值10、支持跟踪HTML框架(v0. 92增加) 11、支持重定向时传递cookie 例如抓取链接 ------------------------------ ------------ -----首先我们需要获取登录需要发送哪些字段,目标地址是什么。这里我们使用 snoopy 的 fetchform 来实现这一点。当然也可以直接查看/happy/...的源码来实现,不过这样更方便。到这里,我们已经获取了目标和提交的数据,接下来就是实现模拟登录了。代码如下: 查看全部
snoopy php网页抓取工具(php采集利器——模拟浏览器类snoopy应用by笨二十一)
php采集Weapon--模拟浏览器式snoopy应用 笨二十一凌晨1点20分在PHP下发布,Web技术研究php页面资料采集,无意中发现Snoopy是一个类,snoopy是用php编写的一个php类,用来模拟浏览器功能。它可以模拟访问,向需要登录的Web服务器提交表单,并提供过滤信息的功能,让您可以根据需要获取所需的信息。 Snoopy官方网站:/projects/snoopy/Snoopy是一个模拟浏览器功能的php类,可以获取网页内容和发送表单。要让 Snoopy 正常运行,您的服务器的 PHP 版本必须至少为 4,并且它支持 PCRE(Perl Compatible Regular Expressions)以及基本的 LAMP 服务。下载snoopy Snoopy的一些特点: 1 抓取网页内容 fetch2 抓取网页文本内容(去掉HTML标签) fetchtext3 抓取网页链接,表单 fetchlinks fetchform4 支持代理主机 5 支持基本用户名/密码身份验证 6 支持设置 user_agent 、referer(来)、cookies 和 header 内容(头文件) 7 支持浏览器重定向和控制重定向深度 8 可以将网页中的链接扩展为高质量的url(默认) 9 提交数据并返回10的值支持跟踪HTML框架11。支持重定向时,传递cookie需要php4或更高版本。因为是PHP类,所以在服务器不支持curl的时候是最好的选择。类方法:fetch($URI)————这是用于抓取网页内容的方法。
$URI参数是被抓取网页的URL地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。 fetchtext($URI)————该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。 fetchform($URI)————该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。 fetchlinks($URI)————这个方法和fetch()类似,唯一不同的是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。 submit($URI, $formvars)------------ 该方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。 submittext($URI,$formvars)———————————这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回里面的文本内容登录后的网页。
submitlinks($URI)————这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。类属性:(括号内为默认值) $host 要连接的主机 $port 要连接的端口 $proxy_host 要使用的代理主机,如果有的话 $proxy_port 要使用的代理主机端口,如果有的话 $agent 用户agent 伪装 Snoopy v0.1)$referer 信息,如果有 $cookies cookie,如果有 $rawheaders 其他头信息,如果有 $maxredirs 最大重定向次数,0=不允许(5)@ >$offsiteok 是否允许异地重定向。(true)$expandlinks 是否完整链接到完整地址(true)$user 认证用户名,如果有 $pass 认证用户名,如果有$accept http 接受类型( image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)$error 报错的地方,如果有 $response_code 从服务器返回 响应码 $headers 从服务器返回的头信息 $ maxlength 最长返回数据长度 $read_timeout 读取操作超时(需要 PHP 4 Beta 4+)设置为 0 表示无超时 $time d_out 如果读取操作超时,此属性返回 true(需要 PHP 4 Beta 4+) $maxframes 允许跟踪的最大帧数 $status http 爬取的状态 $temp_dir 目录,用于 Web 服务器可以写入的临时文件 ( /tmp) $curl_path cURL二进制目录,如果没有cURL二进制设置为false 下面是demoinclude "Snoopy.class.php";$snoopy = new Snoopy; $snoopy->proxy_host = "";$snoopy->proxy_port = "8080"; $snoopy->agent = "(兼容;MSIE 4.01;MSN 2.5;AOL 4.0;Windows 98)";$snoopy->referer = " /"; $snoopy->cookies[ "Se ssionID"] = 238472834723489l;$snoopy->cookies["favoriteColor"] = "RED"; $snoopy->rawheaders["Pragma"] = "no-cache"; $ snoopy->maxredirs = 2;$snoopy->offsiteok = false;$snoopy->expandlinks = false;$snoopy->user = "joe";$snoopy->pass = "bloe";if($snoopy->fetchtext ("")){echo " ".htmlspecialchars ($snoopy->results)."n";}elseecho "错误获取文档:".$snoopy->error."n";snoopy采集example< ?php//采集phpchinaset_time_limit(0);require_once("Snoopy.class.php");$snoopy=new Snoopy();//登录论坛$submit_url = "/bbs/logging.php ?action=login";$submit_vars["loginmode"] = "正常";$submit_vars["styleid"] = "1";$submit_vars["cookietime"] = "315360000";$submit_vars["loginfield"] = "username";$submit_vars["username"] = "***"; //你的用户名 $submit_vars["password"] = "*****"; //你的密码 $submit_vars["questionid"] = "0";$submit_vars[" 答案r"] = "";$submit_vars["loginsubmit"] = "Submit";$snoopy->submit($submit_url,$submit_vars);if ($snoopy->results){//获取连接地址$snoopy- > fetchlinks("/bbs");$url=array();$url=$snoopy->resu lts;//print_r($url);foreach($url as $key=>$value){//match /bbs/forumdisplay.php?fid=156&sid=VfcqTR地址为论坛地址 if (!preg_match("/ ^(/bbs/forumdisplay.php?fid=)[0-9]*&sid=[a-zA- Z]{6}/i",$value)){unset($url[$key]);} }//print_r($url);//获取盘子数组$url,循环访问,得到这里是第一个模块第一页的数据 $i=0;foreach ($url as $key=>$value) {if ($i>=1){//Test limit break;}else{ //访问该模块,提取post的连接地址,在正式访问时,需要提取post分页的数据,然后根据分页数据提取post数据 $snoopy=new Snoopy();$ snoopy->fetchlinks($value);$tie=array();$tie[$i]=$snoopy->results;//print_r($tie);//转换数组foreach($tie[$i] as $key=>$value){//垫ch/bbs/viewthread.php?tid=68127&extra=page%3D1&page=1&sid=iBLZfKif (!preg_match("/^(/bbs/viewthread.php?tid=)[0-9]*&extra=page%3D1&page=[ 0-9]*&sid=[a-zA-Z]{6}/i",$value)){unset($tie [$i][$key]);}}//print_r($tie[$ i]);//分类数组,将同一篇文章不同页面的内容放入一个数组 $left='';//连接左边的公共地址 $j=0;$page=array();foreach($ tie[$i] as $key=>$value){$left=substr($value,0,52); $m=0;foreach ($tie[$i] as $pkey=>$pvalue){//重组数组 if (substr($pvalue,0,52)==$left){$page [ $j][$m]=$pvalue;$m++;}}$j++;}//去除重复开始//$page=array_unique($page);只能用于一维数组 $paget[0 ]=$page[0];$nums=count($page);for ($n=1;$n< $nums;$n++){$paget[$n]=array_diff($page[$n], $page[$n-1]);}//去掉多维数组重复值的末尾//去掉数组的空值 unset($page); $page=array();//重新定义页面数组 $page=array_filter($paget);//print_r($page);$u=0;$title=array();$content=array();$ temp='';$tt=array ();foreach ($page as $key=>$value){//外循环,用于一个帖子 if (is_array($value)){foreach ($value as $k1= >$v1){ //页内循环,对于帖子的N页 $snoopy=new Snoopy();$snoopy->fetch($v1);$temp=$snoopy-> results;//读取标题 if (!preg_match_all("/(.*)< /h2>/i",$temp,$tt)){echo "无标题";exit;}else{$title[$u ]=$tt[1][ 1];}unset($tt);//读取内容 if (!preg_match_all("/ ( .*)< /div>/i",$temp,$tt)){ print_r($tt);echo "no content1";exit;}else{foreach ($tt[1] as $c=>$c 2){$content[$u].=$c2;}} }}else{//直接获取页面内容 $snoopy=new Snoopy();$snoopy->fetch($value);$temp =$snoopy->results;//读取标题 if (!preg_match_all("/( .*)< /h2>/i",$temp,$tt)){echo "no title";exit;}else{ $title[$u]=$tt[1][1];}unset($tt);//读取内容 if (!preg_match_all("/ (.*)< /div>/i",$te mp ,$tt)){echo "no content2";exit;}else{foreach ($tt[1] as $c=>$c2){$content[$u].=$c2;} } }$u++;}print_r($content);}$i++;}}else{echo "login failed";exit;}?> PHP采集 类:史努比一直在尝试做一个 PHP采集@ > 计划,但一直没有进展。在网上找了半天,找到了这个类。好像挺有名的~~ Snoopy是一个php类,用来模仿网页浏览器的功能。它可以完成网页内容的获取和传输。表单任务。
官方网站 /???以下是它的一些特点: 1、易抓取网页内容2、易抓取网页文字(去掉HTML代码)3、易网页链接抓取4、支持代理主机5、支持基本用户/密码认证方式6、支持自定义用户代理、referer、cookies和header内容7、支持浏览器重定向和控制深度重定向8、可以将网页中的链接展开成高质量的url(默认)9、方便提交数据并获取返回值10、支持跟踪HTML框架(v0. 92增加) 11、支持重定向时传递cookie 例如抓取链接 ------------------------------ ------------ -----首先我们需要获取登录需要发送哪些字段,目标地址是什么。这里我们使用 snoopy 的 fetchform 来实现这一点。当然也可以直接查看/happy/...的源码来实现,不过这样更方便。到这里,我们已经获取了目标和提交的数据,接下来就是实现模拟登录了。代码如下:
snoopy php网页抓取工具( 网页内部链接有一个不容否认的道理:搜刮引擎爬虫)
网站优化 • 优采云 发表了文章 • 0 个评论 • 95 次浏览 • 2022-03-08 12:09
网页内部链接有一个不容否认的道理:搜刮引擎爬虫)
谈到网页设计,内部链接有一个不可否认的事实:这是不可避免的,毕竟超链接是浏览互联网和从一个页面跳转到另一个页面的主要方式。
谈到网页设计,关于外部链接有一个不可否认的事实:这是不可避免的,毕竟超链接是扫描互联网并从一个网页跳转到另一个网页的主要手段。
它不仅影响 SEO,而且连接到链接的网页形成了人类或机器无法使用的 网站。搜索引擎爬虫只能索引他们能找到的页面,为了找到它们,他们需要链接——与人类没有什么不同。(为什么我们再次将我们的未来托付给机器人?)
这本身应该鼓励任何 网站 管理员在每次创建 网站 时开发适量的外部链接布局。由于对外部链接的依赖,外部链接是 SEO 中最薄弱的武器之一。你是如何使用这些武器获得最佳排名的?
1.保持页面之间的路径短
使您的网页易于查找。无论您是在百度上搜索还是已经到达目的地,都应该不会花太长时间找到您需要的页面。吸取的教训是,Unity 网站 上的两个页面不应跨越三次点击。无论您当前在浏览器中关闭哪个页面,都必须有通往不同页面的短路径。在规划 网站 布局时,请牢记此准则。
2.构建少量可链接的高质量内容
外部链接需要在页面之间传播的权限。使用大量外部链接执行此操作的最佳方法是什么?当然还有很多精彩内容!
页面内和页面外 SEO 的组合为您的 网站 提供尽可能多的高权限页面。拥有它们后,只需战略性地搁置外部链接并使其正常工作即可。
3.间接链接需求的位置
链接充当管道,允许链接从一个页面流向另一个页面,增加后者在搜索引擎眼中的权威。内部链接(从另一个域到您的链接)和外部链接(同一域内的链接)都是它的全部。
网站页面拥有的排名权应该始终是您的外部链接策略的一个元素。哪些页面可以使用更多链接在搜索性能中更明显?哪些页面可以成为良好的链接供应商?
4.不要过度链接
很容易感到不舒服,并创建了太多不必要的外部链接。外部链接策略背后的想法是构建一个布局,让更重要的页面拥有更多权限。请不要因为从需要它的页面引导链接而让自己跌倒。
5.确保您的外部链接是相关的
您知道来自非自然来源的反向链接如何使您在搜索性能中的 网站 位置处于危险之中吗?外部链接也是如此。从网上购物的冬季短裤到没有任何背景的关于量子物理学的 文章 文章只会让用户想知道(尽管在这种情况下,我想知道上下文会有多少上下文)。
6.注意页面链接数
这对搜索引擎蜘蛛来说是无味的后果。他们可以在单个页面上抓取的链接数量没有限制:大约 150 个。根据您拥有的 网站 示例,这个数字可能太低或太高,您无需担心。在任何情况下,越过此限制的链接与爬网对象无关。如果你要在一个页面上有这么多,你可能想考虑它们的顺序并决定要牺牲哪些。其中一些最终会通过无链接果汁,即使它们是无关注链接。
7.不要在 网站 页脚中放置太多链接
页脚是功能性的,这里没有什么不同。无论用户当前在哪里,他们都可以立即访问 网站 上的每个主页。然而,页脚充满了链接,看起来很乱,很难找到用户需要的内容。此外,还应考虑每个页面的爬取限制。
8.精确应用锚文本
锚文本的作用不仅仅是向用户发送关闭新页面的信号。它们也被搜索引擎视为其链接页面的 关键词。用于交流的多个页面关键词优化网站称为关键字,这听起来很不愉快:搜索引擎很难决定哪个页面应该为相关关键字排名。因此,页面排名不高。
当链接到不同的页面时,不要使用交流锚文本来防止关键字的同类相食。
9.不要让你的外部链接“Nofollow”
您可以在链接中保留 rel="nofollow" 属性。这样做会告诉搜索引擎爬虫不要访问链接的页面,也不会传递排名权。一些 网站 管理员试图将他们的外部链接标记为“nofollow”,并对他们的 网站 上的链接流量进行更多操作。
10.在 HTML 中创建您的链接
超链接如下所示:
当您想创建自己的 网站 时,锚文本是您学习的第一件事。然而,HTML 并不是唯一可以用来编写链接的语言。例如,JavaScript 也可以做到。
var str = "锚文本"; var 结果 = str.link("");
问题是,用其他语言制作的链接可能会被搜索引擎抓取,也可能被报告的权限较小,这取决于它们的使用方式。这就是为什么最好保留 HTML 链接。
11.注意不能爬取的链接
可以将链接放在搜索引擎蜘蛛永远找不到的地方。链接注定永远不会被抓取的地方包括:
Flash、Java 或其他插件:蜘蛛无法访问其中的链接。
损坏的 JavaScript 代码:当代码不起作用时,链接也不起作用。
提交表单:爬虫不会尝试在您的 网站 上提交表单。
搜外框:不会在 网站 上搜索爬网对象。
收录具有数百个链接的页面:蜘蛛的抓取限制为 150。
搜索引擎通常也无法抓取 HTML 框架和 iframe 中的链接,尽管训练有素的 网站 管理员可以提供解决方案。
最初,robots.txt 和 robots 元标记可用于防止蜘蛛访问您选择的任何页面。指向被阻止页面的外部链接仅对访问者有用。
12.防止单页和404页
没有外部链接的页面称为死页。它实际上并不指向 网站 上的任何其他页面,这意味着它对于搜索引擎爬虫来说是一条死胡同。这对用户也很不利:他们只能通过按“退出”按钮或手动输入新 URL 来离开这样的页面。扫描网站 也不是什么好方法。 查看全部
snoopy php网页抓取工具(
网页内部链接有一个不容否认的道理:搜刮引擎爬虫)

谈到网页设计,内部链接有一个不可否认的事实:这是不可避免的,毕竟超链接是浏览互联网和从一个页面跳转到另一个页面的主要方式。
谈到网页设计,关于外部链接有一个不可否认的事实:这是不可避免的,毕竟超链接是扫描互联网并从一个网页跳转到另一个网页的主要手段。
它不仅影响 SEO,而且连接到链接的网页形成了人类或机器无法使用的 网站。搜索引擎爬虫只能索引他们能找到的页面,为了找到它们,他们需要链接——与人类没有什么不同。(为什么我们再次将我们的未来托付给机器人?)
这本身应该鼓励任何 网站 管理员在每次创建 网站 时开发适量的外部链接布局。由于对外部链接的依赖,外部链接是 SEO 中最薄弱的武器之一。你是如何使用这些武器获得最佳排名的?
1.保持页面之间的路径短
使您的网页易于查找。无论您是在百度上搜索还是已经到达目的地,都应该不会花太长时间找到您需要的页面。吸取的教训是,Unity 网站 上的两个页面不应跨越三次点击。无论您当前在浏览器中关闭哪个页面,都必须有通往不同页面的短路径。在规划 网站 布局时,请牢记此准则。
2.构建少量可链接的高质量内容
外部链接需要在页面之间传播的权限。使用大量外部链接执行此操作的最佳方法是什么?当然还有很多精彩内容!
页面内和页面外 SEO 的组合为您的 网站 提供尽可能多的高权限页面。拥有它们后,只需战略性地搁置外部链接并使其正常工作即可。
3.间接链接需求的位置
链接充当管道,允许链接从一个页面流向另一个页面,增加后者在搜索引擎眼中的权威。内部链接(从另一个域到您的链接)和外部链接(同一域内的链接)都是它的全部。
网站页面拥有的排名权应该始终是您的外部链接策略的一个元素。哪些页面可以使用更多链接在搜索性能中更明显?哪些页面可以成为良好的链接供应商?
4.不要过度链接
很容易感到不舒服,并创建了太多不必要的外部链接。外部链接策略背后的想法是构建一个布局,让更重要的页面拥有更多权限。请不要因为从需要它的页面引导链接而让自己跌倒。
5.确保您的外部链接是相关的
您知道来自非自然来源的反向链接如何使您在搜索性能中的 网站 位置处于危险之中吗?外部链接也是如此。从网上购物的冬季短裤到没有任何背景的关于量子物理学的 文章 文章只会让用户想知道(尽管在这种情况下,我想知道上下文会有多少上下文)。
6.注意页面链接数
这对搜索引擎蜘蛛来说是无味的后果。他们可以在单个页面上抓取的链接数量没有限制:大约 150 个。根据您拥有的 网站 示例,这个数字可能太低或太高,您无需担心。在任何情况下,越过此限制的链接与爬网对象无关。如果你要在一个页面上有这么多,你可能想考虑它们的顺序并决定要牺牲哪些。其中一些最终会通过无链接果汁,即使它们是无关注链接。
7.不要在 网站 页脚中放置太多链接
页脚是功能性的,这里没有什么不同。无论用户当前在哪里,他们都可以立即访问 网站 上的每个主页。然而,页脚充满了链接,看起来很乱,很难找到用户需要的内容。此外,还应考虑每个页面的爬取限制。
8.精确应用锚文本
锚文本的作用不仅仅是向用户发送关闭新页面的信号。它们也被搜索引擎视为其链接页面的 关键词。用于交流的多个页面关键词优化网站称为关键字,这听起来很不愉快:搜索引擎很难决定哪个页面应该为相关关键字排名。因此,页面排名不高。
当链接到不同的页面时,不要使用交流锚文本来防止关键字的同类相食。
9.不要让你的外部链接“Nofollow”
您可以在链接中保留 rel="nofollow" 属性。这样做会告诉搜索引擎爬虫不要访问链接的页面,也不会传递排名权。一些 网站 管理员试图将他们的外部链接标记为“nofollow”,并对他们的 网站 上的链接流量进行更多操作。
10.在 HTML 中创建您的链接
超链接如下所示:
当您想创建自己的 网站 时,锚文本是您学习的第一件事。然而,HTML 并不是唯一可以用来编写链接的语言。例如,JavaScript 也可以做到。
var str = "锚文本"; var 结果 = str.link("");
问题是,用其他语言制作的链接可能会被搜索引擎抓取,也可能被报告的权限较小,这取决于它们的使用方式。这就是为什么最好保留 HTML 链接。
11.注意不能爬取的链接
可以将链接放在搜索引擎蜘蛛永远找不到的地方。链接注定永远不会被抓取的地方包括:
Flash、Java 或其他插件:蜘蛛无法访问其中的链接。
损坏的 JavaScript 代码:当代码不起作用时,链接也不起作用。
提交表单:爬虫不会尝试在您的 网站 上提交表单。
搜外框:不会在 网站 上搜索爬网对象。
收录具有数百个链接的页面:蜘蛛的抓取限制为 150。
搜索引擎通常也无法抓取 HTML 框架和 iframe 中的链接,尽管训练有素的 网站 管理员可以提供解决方案。
最初,robots.txt 和 robots 元标记可用于防止蜘蛛访问您选择的任何页面。指向被阻止页面的外部链接仅对访问者有用。
12.防止单页和404页
没有外部链接的页面称为死页。它实际上并不指向 网站 上的任何其他页面,这意味着它对于搜索引擎爬虫来说是一条死胡同。这对用户也很不利:他们只能通过按“退出”按钮或手动输入新 URL 来离开这样的页面。扫描网站 也不是什么好方法。
snoopy php网页抓取工具(Snoopy-thePHPnetclientv1.2.4Snoopy的特点分析)
网站优化 • 优采云 发表了文章 • 0 个评论 • 96 次浏览 • 2022-03-05 10:17
史努比-PHP网络客户端v1.2.4
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(返回)、cookies和header内容(头文件)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接展开成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪 HTML 帧
11、支持重定向时传递cookie
需要php4以上就够了。由于是php的一个类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
总结方法:
1 include "Snoopy.class.php";
2 $snoopy = new Snoopy;
3
4 $snoopy->fetchtext("http://www.php.net/");
5 print $snoopy->results;
6
7 $snoopy->fetchlinks("http://www.phpbuilder.com/");
8 print $snoopy->results;
9
10 $submit_url = "http://lnk.ispi.net/texis/scri ... 3B%3B
11
12 $submit_vars["q"] = "amiga";
13 $submit_vars["submit"] = "Search!";
14 $submit_vars["searchhost"] = "Altavista";
15
16 $snoopy->submit($submit_url,$submit_vars);
17 print $snoopy->results;
18
19 $snoopy->maxframes=5;
20 $snoopy->fetch("http://www.ispi.net/");
21 echo "\n";
22 echo htmlentities($snoopy->results[0]);
23 echo htmlentities($snoopy->results[1]);
24 echo htmlentities($snoopy->results[2]);
25 echo "
\n";2627$snoopy->fetchform("");28 打印 $snoopy->results;29 查看全部
snoopy php网页抓取工具(Snoopy-thePHPnetclientv1.2.4Snoopy的特点分析)
史努比-PHP网络客户端v1.2.4
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签)fetchtext
3、获取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(返回)、cookies和header内容(头文件)
7、支持浏览器重定向,控制重定向深度
8、可以将网页中的链接展开成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪 HTML 帧
11、支持重定向时传递cookie
需要php4以上就够了。由于是php的一个类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
总结方法:
1 include "Snoopy.class.php";
2 $snoopy = new Snoopy;
3
4 $snoopy->fetchtext("http://www.php.net/");
5 print $snoopy->results;
6
7 $snoopy->fetchlinks("http://www.phpbuilder.com/");
8 print $snoopy->results;
9
10 $submit_url = "http://lnk.ispi.net/texis/scri ... 3B%3B
11
12 $submit_vars["q"] = "amiga";
13 $submit_vars["submit"] = "Search!";
14 $submit_vars["searchhost"] = "Altavista";
15
16 $snoopy->submit($submit_url,$submit_vars);
17 print $snoopy->results;
18
19 $snoopy->maxframes=5;
20 $snoopy->fetch("http://www.ispi.net/");
21 echo "\n";
22 echo htmlentities($snoopy->results[0]);
23 echo htmlentities($snoopy->results[1]);
24 echo htmlentities($snoopy->results[2]);
25 echo "
\n";2627$snoopy->fetchform("");28 打印 $snoopy->results;29
snoopy php网页抓取工具(Snoopy的一些特点及LAMP服务都支持的服务方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 106 次浏览 • 2022-02-23 07:10
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
一、史努比的一些特点:
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
二、类方法:
获取($URI)
———–
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
——————-
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
提交($URI,$formvars)
—————————-
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
—————————–
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
——————-
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(Snoopy的一些特点及LAMP服务都支持的服务方法)
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和发送表单的功能。 Snoopy的正确操作需要你的服务器PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),并且支持基本的LAMP服务。
一、史努比的一些特点:
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
二、类方法:
获取($URI)
———–
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
fetchform($URI)
——————
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
——————-
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
提交($URI,$formvars)
—————————-
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
—————————–
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
提交链接($URI)
——————-
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具( PHP4BetaorSnoopy4orPHP3.0.12.类方法:方便抓取网页)
网站优化 • 优采云 发表了文章 • 0 个评论 • 90 次浏览 • 2022-02-21 17:11
PHP4BetaorSnoopy4orPHP3.0.12.类方法:方便抓取网页)
/**
* @name Snoopy手册中文版
* @author 毛毛虫 wangchong1985@gmail.com
* @version Snoopy - the PHP net client v1.2.2
* @link http://www.wangchong.org
* @since 2008-04-27
*/ <br />名称:<br /><br /> Snoopy - the PHP net client v1.2.2<br /> <br />概要:<br /><br /> include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetchtext("http://www.php.net/");
print $snoopy->results;
$snoopy->fetchlinks("http://www.phpbuilder.com/");
print $snoopy->results;
$submit_url = "http://lnk.ispi.net/texis/scri ... 3B%3B
$submit_vars["q"] = "amiga";
$submit_vars["submit"] = "Search!";
$submit_vars["searchhost"] = "Altavista";
$snoopy->submit($submit_url,$submit_vars);
print $snoopy->results;
$snoopy->maxframes=5;
$snoopy->fetch("http://www.ispi.net/");
echo "/n";
echo htmlentities($snoopy->results[0]);
echo htmlentities($snoopy->results[1]);
echo htmlentities($snoopy->results[2]);
echo "
/ n“; $ snoopy-> fetchform(”“);打印$ snoopy->结果;
说明:
snoopy是什么?
snoopy是一个php类,用于模仿Web浏览器的功能,可以完成获取Web内容并发送表单的任务。
史努比的一些功能:
* *方便捕获网页
*方便捕获文本内容(删除HTML标记)
*方便捕获网页的链接
*支持代理主机
*支持基本用户名/密码验证
*支持set user_agent,referer,cookie和header内容(头文件)
*支持浏览器转向,并控制转向深度
*可以将网页中的链接扩展为高质量的URL(默认)
*促进数据并获取返回值
*支持跟踪HTML框架(v 0. 92添加)
*支持重新转向(V 0. 92增加)
要求:
snoopy需要php pcre(perl兼容的正则表达式),
哪个商店是php 3. 0. 9和up。对于读取超时支持,它需要
PHP 4 beta 4或更高版本。 Snoopy是通过PHP 3. 0. 1 2.
测试
方法:
获取($ uri)
-----------
这是用于捕获网页内容的方法。
$ uri参数是网页的URL地址。
结果存储在$以下 - >结果中。
如果您爬行是一个框架,snoopy会将每个框架存储到数组中,然后存入$ this->结果。
fetchtext($ uri)
--------------
此方法类似于fetch(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回网页中的文本内容。
fetchform($ uri)
--------------
此方法类似于fetch(),唯一的区别是此方法删除HTML标记和其他不相关的数据,只返回网页中的表单内容(表单)。
fetchlinks($ uri)
----------------
此方法类似于fetch(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回到网页中的链接(链接)。
默认情况下,将自动完成相对链接,转换为完整的URL。
提交($ uri,$ formvars)
-------------------
此方法将确认表单发送到$ URL指定的链接地址。 $ formvars是一系列存储的表单个参数。
submittext($ uri,$ formvars)
--------------------------
此方法类似于提交(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回登录中的文本内容。
submitlinks($ uri)
----------------
此方法类似于提交(),唯一的区别是此方法删除HTML标记和其他不相关的数据,只返回网页中的链接(链接)。
默认情况下,将自动完成相对链接,转换为完整的URL。
类属性:(括号中的默认值)
$ host连接主机
$端口连接端口
$ proxy_host由代理主机使用,如果有的话,
$ proxy_port由代理主机端口使用,如果有的话,
$代理用户代理伪装(snoopy v 0. 1)
$ cremer rogue信息,如果有的话,
$ cookie cookie,如果有的话
$ rawheaders其他标题信息,如果有的话,
$ maxredirs最大重定向,0 =不允许(5)
$ offsiteok是否允许从现场重定向。 (true)
$ odernlinks完全解决了完整的地址(true)
$用户认证用户名,如果有的话,
$ pass身份验证用户名,如果有的话, 查看全部
snoopy php网页抓取工具(
PHP4BetaorSnoopy4orPHP3.0.12.类方法:方便抓取网页)
/**
* @name Snoopy手册中文版
* @author 毛毛虫 wangchong1985@gmail.com
* @version Snoopy - the PHP net client v1.2.2
* @link http://www.wangchong.org
* @since 2008-04-27
*/ <br />名称:<br /><br /> Snoopy - the PHP net client v1.2.2<br /> <br />概要:<br /><br /> include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetchtext("http://www.php.net/");
print $snoopy->results;
$snoopy->fetchlinks("http://www.phpbuilder.com/");
print $snoopy->results;
$submit_url = "http://lnk.ispi.net/texis/scri ... 3B%3B
$submit_vars["q"] = "amiga";
$submit_vars["submit"] = "Search!";
$submit_vars["searchhost"] = "Altavista";
$snoopy->submit($submit_url,$submit_vars);
print $snoopy->results;
$snoopy->maxframes=5;
$snoopy->fetch("http://www.ispi.net/");
echo "/n";
echo htmlentities($snoopy->results[0]);
echo htmlentities($snoopy->results[1]);
echo htmlentities($snoopy->results[2]);
echo "
/ n“; $ snoopy-> fetchform(”“);打印$ snoopy->结果;
说明:
snoopy是什么?
snoopy是一个php类,用于模仿Web浏览器的功能,可以完成获取Web内容并发送表单的任务。
史努比的一些功能:
* *方便捕获网页
*方便捕获文本内容(删除HTML标记)
*方便捕获网页的链接
*支持代理主机
*支持基本用户名/密码验证
*支持set user_agent,referer,cookie和header内容(头文件)
*支持浏览器转向,并控制转向深度
*可以将网页中的链接扩展为高质量的URL(默认)
*促进数据并获取返回值
*支持跟踪HTML框架(v 0. 92添加)
*支持重新转向(V 0. 92增加)
要求:
snoopy需要php pcre(perl兼容的正则表达式),
哪个商店是php 3. 0. 9和up。对于读取超时支持,它需要
PHP 4 beta 4或更高版本。 Snoopy是通过PHP 3. 0. 1 2.
测试
方法:
获取($ uri)
-----------
这是用于捕获网页内容的方法。
$ uri参数是网页的URL地址。
结果存储在$以下 - >结果中。
如果您爬行是一个框架,snoopy会将每个框架存储到数组中,然后存入$ this->结果。
fetchtext($ uri)
--------------
此方法类似于fetch(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回网页中的文本内容。
fetchform($ uri)
--------------
此方法类似于fetch(),唯一的区别是此方法删除HTML标记和其他不相关的数据,只返回网页中的表单内容(表单)。
fetchlinks($ uri)
----------------
此方法类似于fetch(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回到网页中的链接(链接)。
默认情况下,将自动完成相对链接,转换为完整的URL。
提交($ uri,$ formvars)
-------------------
此方法将确认表单发送到$ URL指定的链接地址。 $ formvars是一系列存储的表单个参数。
submittext($ uri,$ formvars)
--------------------------
此方法类似于提交(),唯一的区别是此方法将删除HTML标记和其他不相关的数据,只返回登录中的文本内容。
submitlinks($ uri)
----------------
此方法类似于提交(),唯一的区别是此方法删除HTML标记和其他不相关的数据,只返回网页中的链接(链接)。
默认情况下,将自动完成相对链接,转换为完整的URL。
类属性:(括号中的默认值)
$ host连接主机
$端口连接端口
$ proxy_host由代理主机使用,如果有的话,
$ proxy_port由代理主机端口使用,如果有的话,
$代理用户代理伪装(snoopy v 0. 1)
$ cremer rogue信息,如果有的话,
$ cookie cookie,如果有的话
$ rawheaders其他标题信息,如果有的话,
$ maxredirs最大重定向,0 =不允许(5)
$ offsiteok是否允许从现场重定向。 (true)
$ odernlinks完全解决了完整的地址(true)
$用户认证用户名,如果有的话,
$ pass身份验证用户名,如果有的话,
snoopy php网页抓取工具(Snoopy模拟浏览器获取网页内容和发送表单的方法和使用方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 117 次浏览 • 2022-02-21 17:09
Snoopy 是一个模拟浏览器获取网页内容和发送表单的 php采集 类。
以下是一些史努比功能:
易于抓取网页内容
易于抓取页面文本(去除 html 标签)
易于抓取页内链接
支持代理爬取
支持基本的用户名和密码认证
支持设置user-agent、referer、cookies和header内容
支持浏览器转向,控制转向深度
将页面上的链接转化为高质量的链接
轻松提交数据并获取返回值
可以跟踪 HTML 帧
支持重定向时传递 cookie
史努比类,方法:
获取($URI)
用于抓取网页内容的方法。$URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的文本内容。
获取表单($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。
类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 要使用的代理主机,如果有的话
$proxy_port 要使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies,如果有的话
$rawheaders 其他头文件,如果有的话
$maxredirs 最大重定向数,0 = 不允许 (5)
$offsiteok 是否允许异地重定向。(真的)
$expandlinks 是否完成指向完整地址的链接(true)
$user 验证用户名,如果有的话
$pass 认证用户名,如果有的话 查看全部
snoopy php网页抓取工具(Snoopy模拟浏览器获取网页内容和发送表单的方法和使用方法)
Snoopy 是一个模拟浏览器获取网页内容和发送表单的 php采集 类。
以下是一些史努比功能:
易于抓取网页内容
易于抓取页面文本(去除 html 标签)
易于抓取页内链接
支持代理爬取
支持基本的用户名和密码认证
支持设置user-agent、referer、cookies和header内容
支持浏览器转向,控制转向深度
将页面上的链接转化为高质量的链接
轻松提交数据并获取返回值
可以跟踪 HTML 帧
支持重定向时传递 cookie
史努比类,方法:
获取($URI)
用于抓取网页内容的方法。$URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每个帧跟踪到一个数组中,然后是 $this->results。
获取文本($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的文本内容。
获取表单($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
获取链接($URI)
该方法与 fetch() 方法类似,唯一不同的是该方法会去除 HTML 标签等无关数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。
提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。$formvars 是一个存储表单参数的数组。
提交文本($URI,$formvars)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,登录后只返回网页的文本内容。
提交链接($URI)
这个方法和submit()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动完成为完整的 URL。
类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 要使用的代理主机,如果有的话
$proxy_port 要使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 信息,如果有的话
$cookies,如果有的话
$rawheaders 其他头文件,如果有的话
$maxredirs 最大重定向数,0 = 不允许 (5)
$offsiteok 是否允许异地重定向。(真的)
$expandlinks 是否完成指向完整地址的链接(true)
$user 验证用户名,如果有的话
$pass 认证用户名,如果有的话
snoopy php网页抓取工具( 老是/php/Snoopy.gz本地下载类类特征)
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2022-02-21 16:09
老是/php/Snoopy.gz本地下载类类特征)
史努比PHP版网络客户端提供本地下载
更新时间:2008-04-15 21:29:47 作者:
snoopy是一个很好的模仿网络客户端的php类,但是本地下载的很少,国外下载又麻烦又慢,所以弄了这个网站给大家下载
史努比在magpierss中使用,这让我有点兴趣研究这个dong dong。在 SF 上,我找到了这个源代码。它其实是一个类,但不要笑,功能很强大。
官方介绍,我翻译了(汗……最近一直在做翻译)
snoopy 是一个模仿网络浏览器功能的 php 类,它可以完成获取网页内容和发送表单的任务。
以下是它的一些特点:
1、轻松抓取网页内容
2、轻松抓取网页文本(去掉HTML代码)
3、方便抓取网页的链接
4、支持代理主机
5、支持基本用户/密码认证方式
6、支持自定义用户代理、referer、cookies和header内容
7、支持浏览器转向和控制转向深度
8、 可以将网页中的链接扩展成高质量的url(默认)
9、方便提交数据并获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持重定向时传递cookies
下面是一个简单的例子,比如我们抓取我博客的文字
^_^,还不错,比如抢链接
哎,效果不错,还有我们需要的url,没有/blog/read.php/85.htm这样的东西。
还要为以后测试的人提交数据。. .
元马/php/Snoopy-1.2.3.tar.gz本地下载 查看全部
snoopy php网页抓取工具(
老是/php/Snoopy.gz本地下载类类特征)
史努比PHP版网络客户端提供本地下载
更新时间:2008-04-15 21:29:47 作者:
snoopy是一个很好的模仿网络客户端的php类,但是本地下载的很少,国外下载又麻烦又慢,所以弄了这个网站给大家下载
史努比在magpierss中使用,这让我有点兴趣研究这个dong dong。在 SF 上,我找到了这个源代码。它其实是一个类,但不要笑,功能很强大。
官方介绍,我翻译了(汗……最近一直在做翻译)
snoopy 是一个模仿网络浏览器功能的 php 类,它可以完成获取网页内容和发送表单的任务。
以下是它的一些特点:
1、轻松抓取网页内容
2、轻松抓取网页文本(去掉HTML代码)
3、方便抓取网页的链接
4、支持代理主机
5、支持基本用户/密码认证方式
6、支持自定义用户代理、referer、cookies和header内容
7、支持浏览器转向和控制转向深度
8、 可以将网页中的链接扩展成高质量的url(默认)
9、方便提交数据并获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持重定向时传递cookies
下面是一个简单的例子,比如我们抓取我博客的文字
^_^,还不错,比如抢链接
哎,效果不错,还有我们需要的url,没有/blog/read.php/85.htm这样的东西。
还要为以后测试的人提交数据。. .
元马/php/Snoopy-1.2.3.tar.gz本地下载
snoopy php网页抓取工具( PHP正则表达式的几种形式介绍及几种形式详解)
网站优化 • 优采云 发表了文章 • 0 个评论 • 72 次浏览 • 2022-02-19 12:02
PHP正则表达式的几种形式介绍及几种形式详解)
PHP中如何利用正则爬取页面中的URL
更新时间:2016-08-09 08:47:55 发布者:daisy
从页面中抓取页面中的所有链接,当然,使用PHP正则表达式是最方便的方式。写正则表达式,首先要总结一下模式,那么页面中的链接会有多少种形式呢?让我们来看看。
前言
链接,也称为超链接,是从一个元素(文本、图像、视频等)到另一个元素(文本、图像、视频等)的链接。网页中的链接一般分为三种,一种是绝对URL超链接,即一个页面的完整路径;另一种是相对URL超链接,一般链接到同一个网站的其他页面;是页面内的超链接,通常链接到同一页面内的其他位置。
搞清楚链接的类型,就知道抓取链接主要有绝对URL超链接和相对URL超链接。要编写正确的正则表达式,我们必须了解我们要查找的对象的模式。
首先,绝对链接,也称为 URL(统一资源定位器),用于标识 Internet 上的唯一资源。URL的结构由三部分组成:协议、服务器名、路径和文件名。
协议是告诉浏览器如何处理要打开的文件的标识符,最常见的是http协议。本文只考虑 HTTP 协议。至于其他的https、ftp、mailto、telnet协议等,也可以根据需要添加。
服务器名是告诉浏览器如何到达服务器的方式,通常是域名或IP地址,有时还有端口号(默认为80)。在FTP协议中,用户名和密码也可以包括在内,本文未涉及)。经过考虑的。
路径和文件名,通常用 / 分隔,表示文件的路径和文件本身的名称。如果没有具体的文件名,则访问该文件夹中的默认文件(可以在服务器端设置)。
现在很清楚,爬网的绝对链接的典型形式可以概括为
每个部分可以使用的字符范围都有明确的规定。有关详细信息,请参阅 RFC1738。然后就可以写正则表达式了。
/(http|https):\/\/([\w\d\-_]+[\.\w\d\-_]+)[:\d+]?([\/]?[\w\/\.]+)/i
解释如下: 查看全部
snoopy php网页抓取工具(
PHP正则表达式的几种形式介绍及几种形式详解)
PHP中如何利用正则爬取页面中的URL
更新时间:2016-08-09 08:47:55 发布者:daisy
从页面中抓取页面中的所有链接,当然,使用PHP正则表达式是最方便的方式。写正则表达式,首先要总结一下模式,那么页面中的链接会有多少种形式呢?让我们来看看。
前言
链接,也称为超链接,是从一个元素(文本、图像、视频等)到另一个元素(文本、图像、视频等)的链接。网页中的链接一般分为三种,一种是绝对URL超链接,即一个页面的完整路径;另一种是相对URL超链接,一般链接到同一个网站的其他页面;是页面内的超链接,通常链接到同一页面内的其他位置。
搞清楚链接的类型,就知道抓取链接主要有绝对URL超链接和相对URL超链接。要编写正确的正则表达式,我们必须了解我们要查找的对象的模式。
首先,绝对链接,也称为 URL(统一资源定位器),用于标识 Internet 上的唯一资源。URL的结构由三部分组成:协议、服务器名、路径和文件名。
协议是告诉浏览器如何处理要打开的文件的标识符,最常见的是http协议。本文只考虑 HTTP 协议。至于其他的https、ftp、mailto、telnet协议等,也可以根据需要添加。
服务器名是告诉浏览器如何到达服务器的方式,通常是域名或IP地址,有时还有端口号(默认为80)。在FTP协议中,用户名和密码也可以包括在内,本文未涉及)。经过考虑的。
路径和文件名,通常用 / 分隔,表示文件的路径和文件本身的名称。如果没有具体的文件名,则访问该文件夹中的默认文件(可以在服务器端设置)。
现在很清楚,爬网的绝对链接的典型形式可以概括为
每个部分可以使用的字符范围都有明确的规定。有关详细信息,请参阅 RFC1738。然后就可以写正则表达式了。
/(http|https):\/\/([\w\d\-_]+[\.\w\d\-_]+)[:\d+]?([\/]?[\w\/\.]+)/i
解释如下:
snoopy php网页抓取工具( Snoopy采集类的一些特点及特点以及LAMP采集方法介绍)
网站优化 • 优采云 发表了文章 • 0 个评论 • 131 次浏览 • 2022-02-16 02:11
Snoopy采集类的一些特点及特点以及LAMP采集方法介绍)
Snoopy PHP采集类使用说明
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和提交表单的功能。
Snoopy 要求您的服务器具有 PHP 4 或更高版本,并支持 PCRE(Perl 兼容正则表达式)以及基本的 LAMP 服务。
一、Snoopy采集类的一些特点:
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
二、Snoopy采集类方法:
1、获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每一帧跟踪到一个数组中,然后存储
$this->结果。
2、fetchtext($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
3、fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
4、fetchlinks($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
5、提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
6、提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
7、提交链接($URI)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、Snoopy采集类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话 查看全部
snoopy php网页抓取工具(
Snoopy采集类的一些特点及特点以及LAMP采集方法介绍)
Snoopy PHP采集类使用说明
Snoopy 是一个 php 类,它模拟浏览器获取网页内容和提交表单的功能。
Snoopy 要求您的服务器具有 PHP 4 或更高版本,并支持 PCRE(Perl 兼容正则表达式)以及基本的 LAMP 服务。
一、Snoopy采集类的一些特点:
1.获取网页内容fetch
2.获取网页的文本内容(去掉HTML标签)fetchtext
3.获取网页链接,form fetchlinks fetchform
4.支持代理主机
5.支持基本的用户名/密码认证
6.支持设置user_agent、referer(来)、cookies和头内容(头文件)
7.支持浏览器重定向,控制重定向深度
8.可以将网页中的链接扩展成高质量的url(默认)
9.提交数据并获取返回值
10.支持跟踪 HTML 帧
11.支持重定向时传递cookie,需要PHP4或以上。由于是 PHP 类,所以不需要扩展。服务器不支持 curl 时的最佳选择。
二、Snoopy采集类方法:
1、获取($URI)
这是用于抓取网页内容的方法。 $URI 参数是被抓取网页的 URL 地址。获取的结果存储在 $this->results 中。如果你正在抓取一个帧,Snoopy 会将每一帧跟踪到一个数组中,然后存储
$this->结果。
2、fetchtext($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的文本内容。
3、fetchform($URI)
该方法与fetch()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的表单内容(form)。
4、fetchlinks($URI)
这个方法和fetch()类似,唯一的区别是这个方法会去掉HTML标签等不相关的数据,只返回网页中的链接。默认情况下,相对链接将自动填充为完整的 URL。
5、提交($URI,$formvars)
此方法向 $URL 指定的链接地址发送确认表单。 $formvars 是一个存储表单参数的数组。
6、提交文本($URI,$formvars)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,登录后只返回网页的文本内容。
7、提交链接($URI)
该方法与submit()类似,唯一不同的是该方法会去除HTML标签等无关数据,只返回网页中的链接。
默认情况下,相对链接将自动完成并转换为完整的 URL。
三、Snoopy采集类属性:(括号内为默认值)
$host 要连接的主机
$port 连接端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装(史努比 v0.1)
$referer 信息,如果有的话
$cookies cookie,如果有的话
$rawheaders 额外的标题,如果有的话
$maxredirs 最大重定向次数,0=不允许(5)
$offsiteok 是否允许异地重定向。 (真)
$expandlinks 是否将所有链接作为完整地址完成(true)
$user 认证用户名,如果有的话
$pass 验证用户名,如果有的话
snoopy php网页抓取工具(构建搜索引擎/网络蜘蛛组合的最佳实践说明书(1))
网站优化 • 优采云 发表了文章 • 0 个评论 • 211 次浏览 • 2022-02-15 04:06
关闭。这个问题需要更加集中。它目前不接受答案。
想要改善这个问题?更新问题,使其仅关注编辑此帖子的一个问题。
关闭 6 年。
改进这个问题
重要提示:以下问题无意破坏任何数据版权。所有抓取和保存的数据都直接链接到源。
对于客户,我正在采集有关构建搜索引擎/网络蜘蛛组合的信息。我确实有一些对内部链接的网页进行深度索引的经验。我也有从网页抓取数据的经验。但是,在这种情况下,数量超出了我的经验,因此我希望从最佳实践中获得一些知识和见解。
首先需要说明的是,客户端会提供一个网站的列表,会被索引。所以,它实际上是一个垂直搜索引擎。结果只需要一个链接、标题和描述(就像谷歌如何显示结果)。这个搜索引擎的主要目的是让访问者更容易搜索大量的网站和结果以找到他们正在寻找的东西。所以:网站A 收录一堆链接 -> 保存所有带有元数据的链接。
其次,有一个更具体的搜索引擎。还索引所有指向(称为)文章 的链接,这些链接分布在许多较小的站点上,其中 文章比垂直搜索引擎中的站点 @> 少。原因很简单:这些页面上的 文章 必须尽可能详细地刮掉。这就是第一个问题所在:为每个网站写一个爬虫会花费很多时间,例如需要采集的数据有:城市名、文章日期、< @文章 标题。所以:网站B比网站A收录更详细的文章s,我们将对这些文章s进行索引并抓取有用的数据。
我确实有一个可行的方法,但它涉及为每个人编写一个刮板网站,事实上,这是我现在能想到的唯一解决方案。由于每个页面的 DOM 是完全不同的,我没有看到一个选项来构建一个万无一失的算法来搜索 DOM 并“知道”页面的哪一部分是位置(但是......如果你可以匹配文本,一种可能性)用于完整的城市列表)。
我想到了几件事:
垂直搜索引擎
对于垂直搜索引擎,这很简单,我们有一个需要索引的网页列表,抓取所有匹配正则表达式的页面并将这些 URL 的完整列表存储在数据库中应该非常简单。我可能想将保存页面数据(元描述、标题等)分离到一个单独的进程中以加快索引速度。由于 网站 有匹配结果/文章,因此该搜索引擎中可能存在重复数据。我还没有决定如何过滤这些重复,可能是关于 文章 标头,但是重复的标头在数据来自的业务部门之间差异很大,但不同 文章
页面抓取
只要我们知道与 URL 匹配的正则表达式,就可以用类似的方式对“待抓取”页面进行索引。我们可以将 URL 列表保留在数据库中,并使用单独的进程运行所有单独的页面,基于 URL,爬虫现在应该使用什么正则表达式来匹配页面上所需的详细信息并将其写入数据库就足够了。网站已准备好对结果进行索引,所以我认为应该有一种方法可以创建一种爬取算法,该算法知道如何读取页面,而不必完全匹配正则表达式。就像我之前说的:如果我有一个完整的城市名称列表,则必须有一个选项来使用搜索算法来获取城市名称,而不必说城市名称位于“#content .about .city”中。
数据冗余
爬虫/爬虫的一个重要部分是防止它索引重复数据。我想要做的是跟踪爬虫何时开始索引 网站 以及索引何时结束,然后我还跟踪 文章 的“最后更新时间”(基于 文章 的 URL ) 并删除任何早于爬网开始时间的 文章。因为据我所知,这些 文章 已经不存在了。
使用页面抓取器更容易实现数据冗余,因为我的客户列出了“良好来源”(阅读:具有唯一 文章 的页面)。数据冗余对于垂直搜索引擎来说更加困难,因为被索引的站点具有从“好来源”中自我选择的手动搜索。因此,多个站点可以从同一来源中进行选择。
如何使结果可搜索
除了如何爬取页面之外,这是一个问题,因为一旦所有数据都存储在数据库中,就需要能够高速搜索。与一些竞争相比,我的客户发现要保存的数据量仍然未知,与我的客户相比,该记录建议大约 10,000 条较小的记录(垂直搜索),可能更详细的 4,000 条较大的信息记录。
我知道与您可能正在使用的某些数据库相比,这仍然是一个很小的数字。但最终,用户最多可以使用 10 到 20 个搜索字段来查找他们正在寻找的内容。由于高流量和大量搜索,我可以想象使用常规 MySQL 查询进行搜索不是一个聪明的主意。
到目前为止,我已经找到了 SphinxSearch 和 ElasticSearch。我没有使用过它们中的任何一个,也没有真正研究过两者的可能性,我唯一知道的是两者都应该在数据量大和大型搜索查询中表现良好。
综上所述
综上所述,这是我的问题的简短列表:
有没有一种简单的方法可以创建匹配 DOM 数据的搜索算法,而无需指定内容所在的确切 div?我应该拆分抓取 URL 并保存页面标题/描述以提高速度,抓取页面(链接、标题和描述)的最佳做法是什么?是否有针对 PHP 的开箱即用解决方案,可以在数据库中找到(可能)重复数据(即使存在细微差异,例如:如果 80% 匹配 -> 标记为重复)以创建面向未来的搜索数据引擎的最佳方法是什么(请记住,随着 网站 流量和搜索请求的增加,数据量可能会增加)
我希望我弄清楚了一切,对不起这么多文字。我想这确实表明我花了一些时间试图自己解决问题。 查看全部
snoopy php网页抓取工具(构建搜索引擎/网络蜘蛛组合的最佳实践说明书(1))
关闭。这个问题需要更加集中。它目前不接受答案。
想要改善这个问题?更新问题,使其仅关注编辑此帖子的一个问题。
关闭 6 年。
改进这个问题
重要提示:以下问题无意破坏任何数据版权。所有抓取和保存的数据都直接链接到源。
对于客户,我正在采集有关构建搜索引擎/网络蜘蛛组合的信息。我确实有一些对内部链接的网页进行深度索引的经验。我也有从网页抓取数据的经验。但是,在这种情况下,数量超出了我的经验,因此我希望从最佳实践中获得一些知识和见解。
首先需要说明的是,客户端会提供一个网站的列表,会被索引。所以,它实际上是一个垂直搜索引擎。结果只需要一个链接、标题和描述(就像谷歌如何显示结果)。这个搜索引擎的主要目的是让访问者更容易搜索大量的网站和结果以找到他们正在寻找的东西。所以:网站A 收录一堆链接 -> 保存所有带有元数据的链接。
其次,有一个更具体的搜索引擎。还索引所有指向(称为)文章 的链接,这些链接分布在许多较小的站点上,其中 文章比垂直搜索引擎中的站点 @> 少。原因很简单:这些页面上的 文章 必须尽可能详细地刮掉。这就是第一个问题所在:为每个网站写一个爬虫会花费很多时间,例如需要采集的数据有:城市名、文章日期、< @文章 标题。所以:网站B比网站A收录更详细的文章s,我们将对这些文章s进行索引并抓取有用的数据。
我确实有一个可行的方法,但它涉及为每个人编写一个刮板网站,事实上,这是我现在能想到的唯一解决方案。由于每个页面的 DOM 是完全不同的,我没有看到一个选项来构建一个万无一失的算法来搜索 DOM 并“知道”页面的哪一部分是位置(但是......如果你可以匹配文本,一种可能性)用于完整的城市列表)。
我想到了几件事:
垂直搜索引擎
对于垂直搜索引擎,这很简单,我们有一个需要索引的网页列表,抓取所有匹配正则表达式的页面并将这些 URL 的完整列表存储在数据库中应该非常简单。我可能想将保存页面数据(元描述、标题等)分离到一个单独的进程中以加快索引速度。由于 网站 有匹配结果/文章,因此该搜索引擎中可能存在重复数据。我还没有决定如何过滤这些重复,可能是关于 文章 标头,但是重复的标头在数据来自的业务部门之间差异很大,但不同 文章
页面抓取
只要我们知道与 URL 匹配的正则表达式,就可以用类似的方式对“待抓取”页面进行索引。我们可以将 URL 列表保留在数据库中,并使用单独的进程运行所有单独的页面,基于 URL,爬虫现在应该使用什么正则表达式来匹配页面上所需的详细信息并将其写入数据库就足够了。网站已准备好对结果进行索引,所以我认为应该有一种方法可以创建一种爬取算法,该算法知道如何读取页面,而不必完全匹配正则表达式。就像我之前说的:如果我有一个完整的城市名称列表,则必须有一个选项来使用搜索算法来获取城市名称,而不必说城市名称位于“#content .about .city”中。
数据冗余
爬虫/爬虫的一个重要部分是防止它索引重复数据。我想要做的是跟踪爬虫何时开始索引 网站 以及索引何时结束,然后我还跟踪 文章 的“最后更新时间”(基于 文章 的 URL ) 并删除任何早于爬网开始时间的 文章。因为据我所知,这些 文章 已经不存在了。
使用页面抓取器更容易实现数据冗余,因为我的客户列出了“良好来源”(阅读:具有唯一 文章 的页面)。数据冗余对于垂直搜索引擎来说更加困难,因为被索引的站点具有从“好来源”中自我选择的手动搜索。因此,多个站点可以从同一来源中进行选择。
如何使结果可搜索
除了如何爬取页面之外,这是一个问题,因为一旦所有数据都存储在数据库中,就需要能够高速搜索。与一些竞争相比,我的客户发现要保存的数据量仍然未知,与我的客户相比,该记录建议大约 10,000 条较小的记录(垂直搜索),可能更详细的 4,000 条较大的信息记录。
我知道与您可能正在使用的某些数据库相比,这仍然是一个很小的数字。但最终,用户最多可以使用 10 到 20 个搜索字段来查找他们正在寻找的内容。由于高流量和大量搜索,我可以想象使用常规 MySQL 查询进行搜索不是一个聪明的主意。
到目前为止,我已经找到了 SphinxSearch 和 ElasticSearch。我没有使用过它们中的任何一个,也没有真正研究过两者的可能性,我唯一知道的是两者都应该在数据量大和大型搜索查询中表现良好。
综上所述
综上所述,这是我的问题的简短列表:
有没有一种简单的方法可以创建匹配 DOM 数据的搜索算法,而无需指定内容所在的确切 div?我应该拆分抓取 URL 并保存页面标题/描述以提高速度,抓取页面(链接、标题和描述)的最佳做法是什么?是否有针对 PHP 的开箱即用解决方案,可以在数据库中找到(可能)重复数据(即使存在细微差异,例如:如果 80% 匹配 -> 标记为重复)以创建面向未来的搜索数据引擎的最佳方法是什么(请记住,随着 网站 流量和搜索请求的增加,数据量可能会增加)
我希望我弄清楚了一切,对不起这么多文字。我想这确实表明我花了一些时间试图自己解决问题。
snoopy php网页抓取工具(网站php抓取工具推荐活动:更多优惠gt(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2022-02-12 01:04
阿里云>云栖社区>主题图>W>网站php爬虫
推荐活动:
更多优惠>
当前话题:网站php爬虫加入采集
相关话题:
网站php爬虫相关博文看更多博文
用PHP爬取页面并分析
作者:Tech Fatty 1207人查看评论:04年前
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。一、使用 Snoopy.class.php 在页面上抓取一个可爱的类名。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。1)我现在去抓一个
阅读全文
抓取某个 网站 站点的记录
作者:Pure Bug Paper 997 浏览评论:05年前
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。非常好; 具体的操作手册和其他的东西这里就不说了。有很多在线搜索。以下是遇到的主要问题:
阅读全文
抓取某个 网站 站点的记录
作者:zting Technology 822 浏览评论:05年前
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。非常好; 具体的操作手册等这里就不说了。有很多在线搜索。以下是遇到的问题: 软件下载位置
阅读全文
网站的robots文件是用自动生成工具的URL写的
作者:科技小先锋 1069人查看评论:04年前
现在网站 站长会在robots.txt 中编写各种规则,以便有更多的网站收录 内容被各大搜索引擎收录。@网站自动生成:网址如下:同时引用robots的基本写法:robots.tx
阅读全文
10 个最受欢迎的开源网页设计工具
作者:zting科技881查看评论:04年前
原文链接:网页设计师的 10 个最佳开源工具 许多开源网页设计工具具有与付费工具相同的强大功能并且是免费的。使用这些工具不仅可以省钱,还可以帮助您做好日常工作,在这个文章,我们将与大
阅读全文
SEO工具大全
作者:技术小牛 2013 人浏览评论:04 年前
推荐工具:查域名IP:IP 反向查:http
阅读全文
通过网络安全工具 Burp 套件 (二)) 查找 网站 中的 XSS 漏洞
作者:apache9153 人浏览评论:03年前
一、背景作者在6月份录制了一个关于XSS跨站漏洞加强网络安全的视频教程。有许多实际案例需要涵盖。漏洞挖掘案例分为人工挖掘、工具挖掘、代码审计三个部分。, 手动挖矿的参考地址是为了快速找出网站(一)中可能存在的XSS漏洞
阅读全文
教你如何在LinuxMac系统下使用命令行工具创建网站备份
作者:沃克武松 1446人浏览评论:04年前
创建网站备份应该是网站管理员最重要的日常任务之一。但现实是,备份这一步往往被很多人忽视,这意味着仍然有很多网络管理员的安全意识不高。所有 Linux/Mac 用户都可以使用命令行工具以零经济成本创建网站备份。如果您不使用 Linux/Mac,请关注我
阅读全文
网站php爬虫相关问答题
【javascript学习全家桶】934道JavaScript热门问题,上百位阿里巴巴技术专家答疑解惑
作者:管理贝贝5207 浏览评论:13年前
阿里极客公益活动:也许你只是因为一个问题而夜战,也许你迷茫只求答案,也许你因为一个未知数而绞尽脑汁,所以他们来了,阿里巴巴技术专家来云栖Q&A为你解答技术问题他们用自己手中的技术来帮助用户成长。本次活动特邀100阿里巴巴科技
阅读全文 查看全部
snoopy php网页抓取工具(网站php抓取工具推荐活动:更多优惠gt(组图))
阿里云>云栖社区>主题图>W>网站php爬虫

推荐活动:
更多优惠>
当前话题:网站php爬虫加入采集
相关话题:
网站php爬虫相关博文看更多博文
用PHP爬取页面并分析


作者:Tech Fatty 1207人查看评论:04年前
在做爬取之前,记得把php.ini中的max_execution_time设置大一点,否则会报错。一、使用 Snoopy.class.php 在页面上抓取一个可爱的类名。功能也很强大,用来模拟浏览器的功能,可以获取网页内容,发送表单等。1)我现在去抓一个
阅读全文
抓取某个 网站 站点的记录


作者:Pure Bug Paper 997 浏览评论:05年前
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。非常好; 具体的操作手册和其他的东西这里就不说了。有很多在线搜索。以下是遇到的主要问题:
阅读全文
抓取某个 网站 站点的记录


作者:zting Technology 822 浏览评论:05年前
经常因为某种原因,我们需要爬取某个网站或者直接复制某个站点。我们在网上找了很多工具进行测试,尝试了很多不同的问题。最后,我们选择了 Teleport Ultra 并使用了它。非常好; 具体的操作手册等这里就不说了。有很多在线搜索。以下是遇到的问题: 软件下载位置
阅读全文
网站的robots文件是用自动生成工具的URL写的


作者:科技小先锋 1069人查看评论:04年前
现在网站 站长会在robots.txt 中编写各种规则,以便有更多的网站收录 内容被各大搜索引擎收录。@网站自动生成:网址如下:同时引用robots的基本写法:robots.tx
阅读全文
10 个最受欢迎的开源网页设计工具


作者:zting科技881查看评论:04年前
原文链接:网页设计师的 10 个最佳开源工具 许多开源网页设计工具具有与付费工具相同的强大功能并且是免费的。使用这些工具不仅可以省钱,还可以帮助您做好日常工作,在这个文章,我们将与大
阅读全文
SEO工具大全


作者:技术小牛 2013 人浏览评论:04 年前
推荐工具:查域名IP:IP 反向查:http
阅读全文
通过网络安全工具 Burp 套件 (二)) 查找 网站 中的 XSS 漏洞


作者:apache9153 人浏览评论:03年前
一、背景作者在6月份录制了一个关于XSS跨站漏洞加强网络安全的视频教程。有许多实际案例需要涵盖。漏洞挖掘案例分为人工挖掘、工具挖掘、代码审计三个部分。, 手动挖矿的参考地址是为了快速找出网站(一)中可能存在的XSS漏洞
阅读全文
教你如何在LinuxMac系统下使用命令行工具创建网站备份

作者:沃克武松 1446人浏览评论:04年前
创建网站备份应该是网站管理员最重要的日常任务之一。但现实是,备份这一步往往被很多人忽视,这意味着仍然有很多网络管理员的安全意识不高。所有 Linux/Mac 用户都可以使用命令行工具以零经济成本创建网站备份。如果您不使用 Linux/Mac,请关注我
阅读全文
网站php爬虫相关问答题
【javascript学习全家桶】934道JavaScript热门问题,上百位阿里巴巴技术专家答疑解惑

作者:管理贝贝5207 浏览评论:13年前
阿里极客公益活动:也许你只是因为一个问题而夜战,也许你迷茫只求答案,也许你因为一个未知数而绞尽脑汁,所以他们来了,阿里巴巴技术专家来云栖Q&A为你解答技术问题他们用自己手中的技术来帮助用户成长。本次活动特邀100阿里巴巴科技
阅读全文
snoopy php网页抓取工具(,PHP实现爬虫的方式做个总结(一)_)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2022-02-12 01:03
PHP爬取网页和解析HTML的常用方法总结
PHP爬取网页和解析HTML的常用方法总结
第一财经站长站,站长之家为你整理了PHP爬取网页和解析HTML常用方法的相关内容。
概览
爬虫是我们在做程序的时候经常会遇到的一个功能。 PHP有很多开源的爬虫工具,比如snoopy。这些开源爬虫工具通常可以帮助我们完成大部分功能,但在某些情况下,我们需要自己实现一个爬虫。本文文章实现PHP爬虫方式的总结。
爬虫PHP实现的主要方法
1.file() 函数
2.file_get_contents() 函数
3.fopen()->fread()->fclose()方法
4.卷曲法
5.fsockopen()函数,socket方法
6.使用开源工具,例如:snoopy
PHP 解析 XML 或 HTML 的主要方式
1.正则表达式
2.PHP DOMDocument 对象
3.插件如:PHP Simple HTML DOM Parser
总结
这里简单总结一下PHP实现爬虫的方式。这个设计有很多内容。后面我会总结一下PHP解析HTML和XML的方式。
以上是PHP爬取网页和解析HTML常用方法总结的详细介绍。欢迎大家对PHP爬取网页和解析HTML总结内容的常用方法提出宝贵意见 查看全部
snoopy php网页抓取工具(,PHP实现爬虫的方式做个总结(一)_)
PHP爬取网页和解析HTML的常用方法总结
PHP爬取网页和解析HTML的常用方法总结
第一财经站长站,站长之家为你整理了PHP爬取网页和解析HTML常用方法的相关内容。
概览
爬虫是我们在做程序的时候经常会遇到的一个功能。 PHP有很多开源的爬虫工具,比如snoopy。这些开源爬虫工具通常可以帮助我们完成大部分功能,但在某些情况下,我们需要自己实现一个爬虫。本文文章实现PHP爬虫方式的总结。
爬虫PHP实现的主要方法
1.file() 函数
2.file_get_contents() 函数
3.fopen()->fread()->fclose()方法
4.卷曲法
5.fsockopen()函数,socket方法
6.使用开源工具,例如:snoopy
PHP 解析 XML 或 HTML 的主要方式
1.正则表达式
2.PHP DOMDocument 对象
3.插件如:PHP Simple HTML DOM Parser
总结
这里简单总结一下PHP实现爬虫的方式。这个设计有很多内容。后面我会总结一下PHP解析HTML和XML的方式。
以上是PHP爬取网页和解析HTML常用方法总结的详细介绍。欢迎大家对PHP爬取网页和解析HTML总结内容的常用方法提出宝贵意见
snoopy php网页抓取工具(snoopy()、file_get_contents(.class.phpsnoopy)
网站优化 • 优采云 发表了文章 • 0 个评论 • 85 次浏览 • 2022-02-05 15:08
curl()、file_get_contents()、snoopy.class.php,这三个用于远程页面爬取或者采集的工具,它们的功能是等价的,各自的优缺点是什么,下面介绍一下:
史努比类.php
Snoopy 是使用 fsockopen 的自研类,效率高,不需要服务器特定的配置支持。可以在普通的虚拟主机上使用,但是经常会出现问题。官方下载地址:
Snoopy是一个模拟浏览器功能的php类,可以获取网页内容和发送表单。
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签) fetchtext
3、 抓取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(来)、cookies和header内容(头文件)
7、支持浏览器重定向,可以控制重定向深度
8、 可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML帧
11、支持重定向时传递cookie
需要php4或更高版本就足够了。既然是php的一个类,就不需要扩展支持了。服务器不支持 curl 时的最佳选择。
随附的:
史努比中文说明书:
使用示例:
史努比的缺陷和 CURL 的威力:
文件获取内容()
file_get_contents 是 fsockopen 函数的简单封装,效率稍低,但是抓取成功率很高,所以我一般在 snoopy 有问题的时候给他打电话。5.0.0 增加了对context的支持,有了context,他还可以发送header信息,自定义user agent,referer,cookies都有。5.1.0 添加了 offset 和 maxlen 参数以只读部分文件。
卷曲()
curl一般用于爬取网页,二是获取或发布数据,三是在PHP中实现多线程任务。
最厉害的,它几乎可以模拟浏览器的方方面面,几乎可以造假。效率也很高,支持多线程,但是需要开启curl扩展。
cURL 是一个使用 URL 语法传输文件和数据的工具,支持多种协议,例如 HTTP、FTP、TELNET 等。PHP 还支持 cURL 库,我们经常使用它进行远程页面抓取和 采集 .
它还支持从断点恢复 Range 的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.spiegel.de/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
/**
*But as noted before if the server doesn't honor this header but sends the whole file curl will download all of it. E.g. http://www.php.net ignores the header. But you can (in addition) set a write function callback and abort the request when more data is received, e.g.
* php 5.3+ only
* use function writefn($ch, $chunk) { ... } for earlier versions
*/
$writefn = function($ch, $chunk) {
static $data='';
static $limit = 500; // 500 bytes, it's only a test
$len = strlen($data) + strlen($chunk);
if ($len >= $limit ) {
$data .= substr($chunk, 0, $limit-strlen($data));
echo strlen($data) , ' ', $data;
return -1;
}
$data .= $chunk;
return strlen($chunk);
};
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.php.net/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);
$result = curl_exec($ch);
curl_close($ch);
使用教程地址: 查看全部
snoopy php网页抓取工具(snoopy()、file_get_contents(.class.phpsnoopy)
curl()、file_get_contents()、snoopy.class.php,这三个用于远程页面爬取或者采集的工具,它们的功能是等价的,各自的优缺点是什么,下面介绍一下:
史努比类.php
Snoopy 是使用 fsockopen 的自研类,效率高,不需要服务器特定的配置支持。可以在普通的虚拟主机上使用,但是经常会出现问题。官方下载地址:
Snoopy是一个模拟浏览器功能的php类,可以获取网页内容和发送表单。
史努比的特点:
1、获取网页内容fetch
2、获取网页的文本内容(去掉HTML标签) fetchtext
3、 抓取网页链接,form fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码认证
6、支持设置user_agent、referer(来)、cookies和header内容(头文件)
7、支持浏览器重定向,可以控制重定向深度
8、 可以将网页中的链接扩展成高质量的url(默认)
9、提交数据并获取返回值
10、支持跟踪HTML帧
11、支持重定向时传递cookie
需要php4或更高版本就足够了。既然是php的一个类,就不需要扩展支持了。服务器不支持 curl 时的最佳选择。
随附的:
史努比中文说明书:
使用示例:
史努比的缺陷和 CURL 的威力:
文件获取内容()
file_get_contents 是 fsockopen 函数的简单封装,效率稍低,但是抓取成功率很高,所以我一般在 snoopy 有问题的时候给他打电话。5.0.0 增加了对context的支持,有了context,他还可以发送header信息,自定义user agent,referer,cookies都有。5.1.0 添加了 offset 和 maxlen 参数以只读部分文件。
卷曲()
curl一般用于爬取网页,二是获取或发布数据,三是在PHP中实现多线程任务。
最厉害的,它几乎可以模拟浏览器的方方面面,几乎可以造假。效率也很高,支持多线程,但是需要开启curl扩展。
cURL 是一个使用 URL 语法传输文件和数据的工具,支持多种协议,例如 HTTP、FTP、TELNET 等。PHP 还支持 cURL 库,我们经常使用它进行远程页面抓取和 采集 .
它还支持从断点恢复 Range 的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.spiegel.de/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
/**
*But as noted before if the server doesn't honor this header but sends the whole file curl will download all of it. E.g. http://www.php.net ignores the header. But you can (in addition) set a write function callback and abort the request when more data is received, e.g.
* php 5.3+ only
* use function writefn($ch, $chunk) { ... } for earlier versions
*/
$writefn = function($ch, $chunk) {
static $data='';
static $limit = 500; // 500 bytes, it's only a test
$len = strlen($data) + strlen($chunk);
if ($len >= $limit ) {
$data .= substr($chunk, 0, $limit-strlen($data));
echo strlen($data) , ' ', $data;
return -1;
}
$data .= $chunk;
return strlen($chunk);
};
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.php.net/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);
$result = curl_exec($ch);
curl_close($ch);
使用教程地址: