好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php网页爬虫 php 爬虫

很多站长朋友们都不太清楚php网页爬虫,今天小编就来给大家整理php网页爬虫,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 如何用php 编写网络爬虫 2、 php 实现网络爬虫 3、 如何用php 编写网络爬虫? 4、 如何用PHP做网络爬虫 5、 php中curl爬虫 怎么样通过网页获取所有链接 如何用php 编写网络爬虫

php不太适合用来写网络爬虫,因为几乎没有现成的框架,或者成熟的下载机制,也不太适合做并发处理.

下载页面的话除了一个curl,就是file_get_contents,或者curl_multi来做并发请求.curl可以代理端口,虚假ip,带cookie,带header请求目标页面,下载完成之后解析页面可以用queryList来解析html.写法类似jQuery.

提供给你我之前写的类:curl.php ?希望可以帮到你.

QueryList.php和phpQuery.php由于文件太大了,没办法贴上来

<?php

class?Http?{

????public?function?curlRequest($url,?$postData?=?'',?$timeOut?=?10,?$httpHeader?=?array())?{

????????$handle?=?curl_init?();

????????curl_setopt?(?$handle,?CURLOPT_URL,?$url?);

????????if?($httpHeader)?{

????????????curl_setopt($handle,?CURLOPT_HTTPHEADER,?$httpHeader);

????????}

????????curl_setopt?(?$handle,?CURLOPT_RETURNTRANSFER,?true?);

????????curl_setopt?(?$handle,?CURLOPT_HEADER,?0?);????????????????????????????????????????????????????????????????curl_setopt?(?$handle,?CURLOPT_TIMEOUT,?$timeOut?);

????????curl_setopt?(?$handle,?CURLOPT_FOLLOWLOCATION,?1?);

????????curl_setopt?(?$handle,?CURLOPT_SSL_VERIFYPEER,?false?);

????????curl_setopt?(?$handle,?CURLOPT_SSL_VERIFYHOST,?false?);

????????curl_setopt?(?$handle,?CURLOPT_USERAGENT,?'Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_7_2)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/27.0.1453.93?Safari/537.36');????????curl_setopt?(?$handle,?CURLOPT_ENCODING,?'gzip,deflate,sdch');

????????if?(!?empty?(?$postData?))?{

????????????curl_setopt?(?$handle,?CURLOPT_POST,?1?);

????????????curl_setopt?(?$handle,?CURLOPT_POSTFIELDS,?$postData);

????????}

????????$result['response']?=?curl_exec?(?$handle?);

????????$result['httpStatus']?=?curl_getinfo?(?$handle,?CURLINFO_HTTP_CODE?);

????????$result['fullInfo']?=?curl_getinfo?(?$handle?);

????????$result['errorMsg']?=?'';

????????$result['errorNo']?=?0;

????????if?(curl_errno($handle))?{

????????????$result['errorMsg']?=?curl_error($handle);

????????????$result['errorNo']?=?curl_errno($handle);

????????}

????????curl_close?(?$handle?);

????????return?$result;

????}

}

?>

php 实现网络爬虫

pcntl_fork或者swoole_process实现多进程并发。按照每个网页抓取耗时500ms,开200个进程,可以实现每秒400个页面的抓取。

curl实现页面抓取,设置cookie可以实现模拟登录

simple_html_dom 实现页面的解析和DOM处理

如果想要模拟浏览器,可以使用casperJS。用swoole扩展封装一个服务接口给PHP层调用

在这里有一套爬虫系统就是基于上述技术方案实现的,每天会抓取几千万个页面。

如何用php 编写网络爬虫?

pcntl_fork或者swoole_process实现多进程并发。按照每个网页抓取耗时500ms,开200个进程,可以实现每秒400个页面的抓取。

curl实现页面抓取,设置cookie可以实现模拟登录

simple_html_dom 实现页面的解析和DOM处理

如果想要模拟浏览器,可以使用casperJS。用swoole扩展封装一个服务接口给PHP层调用

在这里有一套爬虫系统就是基于上述技术方案实现的,每天会抓取几千万个页面。

如何用PHP做网络爬虫

其实用PHP来爬会非常方便,主要是PHP的正则表达式功能在搜集页面连接方面很方便,另外PHP的fopen、file_get_contents以及libcur的函数非常方便的下载网页内容。

具体处理方式就是建立就一个任务队列,往队列里面插入一些种子任务和可以开始爬行,爬行的过程就是循环的从队列里面提取一个URL,打开后获取连接插入队列中,进行相关的保存。队列可以使用数组实现。

当然PHP作为但线程的东西,慢慢爬还是可以,怕的就是有的URL打不开,会死在那里。

php中curl爬虫 怎么样通过网页获取所有链接

本文承接上面两篇,本篇中的示例要调用到前两篇中的函数,做一个简单的URL采集。一般php采集网络数据会用file_get_contents、file和cURL。不过据说cURL会比file_get_contents、file更快更专业,更适合采集。今天就试试用cURL来获取网页上的所有链接。示例如下:

<?php

/*

* 使用curl 采集hao123测试数据下的所有链接。

*/

include_once('function.php');

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, '');

// 只需返回HTTP header

curl_setopt($ch, CURLOPT_HEADER, 1);

// 页面内容我们并不需要

// curl_setopt($ch, CURLOPT_NOBODY, 1);

// 返回结果,而不是输出它

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$html = curl_exec($ch);

$info = curl_getinfo($ch);

if ($html === false) {

echo "cURL Error: " . curl_error($ch);

}

curl_close($ch);

$linkarr = _striplinks($html);

// 主机部分,补全用

$host = '';

if (is_array($linkarr)) {

foreach ($linkarr as $k => $v) {

$linkresult[$k] = _expandlinks($v, $host);

}

}

printf("<p>此页面的所有链接为:</p><pre>%s</pre>n", var_export($linkresult , true));

?>

function.php内容如下(即为上两篇中两个函数的合集):

<?php

function _striplinks($document) {

preg_match_all("'<s*as.*?hrefs*=s*(["'])?(?(1) (.*?)\1 | ([^s>]+))'isx", $document, $links);

// catenate the non-empty matches from the conditional subpattern

while (list($key, $val) = each($links[2])) {

if (!empty($val))

$match[] = $val;

} while (list($key, $val) = each($links[3])) {

if (!empty($val))

$match[] = $val;

}

// return the links

return $match;

}

/*===================================================================*

Function: _expandlinks

Purpose: expand each link into a fully qualified URL

Input: $links the links to qualify

$URI the full URI to get the base from

Output: $expandedLinks the expanded links

*===================================================================*/

function _expandlinks($links,$URI)

{

$URI_PARTS = parse_url($URI);

$host = $URI_PARTS["host"];

preg_match("/^[^?]+/",$URI,$match);

$match = preg_replace("|/[^/.]+.[^/.]+$|","",$match[0]);

$match = preg_replace("|/$|","",$match);

$match_part = parse_url($match);

$match_root =

$match_part["scheme"]."://".$match_part["host"];

$search = array( "|^http://".preg_quote($host)."|i",

"|^(/)|i",

"|^(?!http://)(?!mailto:)|i",

"|/./|",

"|/[^/]+/|"

);

$replace = array( "",

$match_root."/",

$match."/",

"/",

"/"

);

$expandedLinks = preg_replace($search,$replace,$links);

return $expandedLinks;

}

?>

关于php网页爬虫的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php网页爬虫 php 爬虫的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did242439
更新时间:2023-05-28   阅读:25次

上一篇: php防止逆向破解 php is_numeric绕过

下一篇:php调试代码 php 调试

最新资料更新

  • 1.ubuntuphp启动 ubuntu开机启动python
  • 2.proxy.php proxyphp?url
  • 3.商品展示模块php 商品展示模块的设计要点
  • 4.notepad写php notepad可以写c语言吗
  • 5.phpsessions phpsession使用
  • 6.php大数据算法 php如何处理大数据
  • 7.node会取代php nodejs会被deno取代吗
  • 8.phpsmtp配置项 php 配置
  • 9.php多继承的作用 php继承关键字
  • 10.web安全php Web安全原理分析与实践
  • 11.php添加curl支持 php curl formdata
  • 12.iconv函数php iconv函数参数
  • 13.php网站+iis php网站有哪些
  • 14.php视频教程知乎 php视频项目视频教程
  • 15.php网页老是跳转 php 网页跳转
  • 16.口袋源码php下载 口袋com
  • 17.php每天更新数据 php数据库更新语句
  • 18.php表格循环 php循环函数
  • 19.php下载liunx php下载器
  • 20.零基础php模板 php0基础教程

CopyRight:2016-{hedonghua:year}{hedonghua:sitegs} 备案ICP:湘ICP备09009000号-16 {hedonghua:sitejym}
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]