网站建设资讯

NEWS

网站建设资讯

php抓取某个网站数据 php获取网页数据

怎么用php采集网站数据

简单的分了几个步骤:

网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了富县免费建站欢迎大家使用!

1、确定采集目标

2、获取目标远程页面内容(curl、file_get_contents)

3、分析页面html源码,正则匹配你需要的内容(preg_match、preg_match_all),这一步最为重要,不同页面正则匹配规则不一样

4、入库

PHP抓取网页指定内容

?php

/*

* 如下: 方法有点笨

* 抓取网页内容用 PHP 的正则

* 用JS每隔5分钟刷新当前页面---即重新获取网页内容

*

* 注: $mode中--title/title-更改为所需内容(如 $mode = "#a(.*)/a#";获取所有链接)

*

* window.location.href="";中的

* 更改为自己的URL----作用:即刷新当前页面

*

* setInterval("ref()",300000);是每隔300000毫秒(即 5 * 60 *1000 毫秒即5分钟)执行一次函数 ref()

*

* print_r($arr);输出获得的所有内容 $arr是一个数组 可根据所需输出一部分(如 echo $arr[1][0];)

* 若要获得所有内容 可去掉

* $mode = "#title(.*)/title#";

if(preg_match_all($mode,$content,$arr)){

print_r($arr);

echo "br/";

echo $arr[1][0];

}

再加上 echo $content;

*/

$url = ""; //目标站

$fp = @fopen($url, "r") or die("超时");

$content=file_get_contents($url);

$mode = "#title(.*)/title#";

if(preg_match_all($mode,$content,$arr)){

//print_r($arr);

echo "br/";

echo $arr[1][0];

}

?

script language="JavaScript" type="text/javascript"

--

function ref(){

window.location.href="";

}

setInterval("ref()",300000);

//--

/script

php如何获取网址中的参数

比如有一个网址为

http://域名/goods.php?u=59id=24#pinglun

我想得到这个id值

可以用正则,也可以用php函数解析到数组中

用正则可以这样

preg_match('/id=(\d+)/',$_SERVER["REQUEST_URI"],$m);//$_SERVER 这个表示当前网址url

print_r($m[1]);exit;

或者用parse_url()及parse_str()函数

$cur_q=parse_url($_SERVER["REQUEST_URI"],PHP_URL_QUERY);

parse_str($cur_q,$myArray);

print_r($myArray["id"]);exit;

拓展资料

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

PHP的特性包括:

1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。

2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,

PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;

PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。

3. PHP支持几乎所有流行的数据库以及操作系统。

4. 最重要的是PHP可以用C、C++进行程序的扩展!

参考资料:百度百科 PHP

phpstudy怎么抓取网页数据

什么网页数据?

是打开 本地网页还是打开网上网页

如果是本地网页的话  在浏览器上输入127.0.0.1或者localhost进行访问

如果是外网我理解的是你要获取外网的一个网页,可以用代码或者程序来实现

(一般称为采集程序,或者小偷程序)

//个人认为curl好一点,因为curl可以模拟浏览器,有的网站会过滤机器人

//1.php代码

//把网页读入一个字符串

$contone = file_get_contents('url');

print_r($contone);

//curl采集

#初始化curl  (true/false)

$ch=curl_init();

#请求url地址

$params[CURLOPT_URL]='网址';

#是否返回响应头信息

$params[CURLOPT_HEADER] = true;

#是否将结果返回

$params[CURLOPT_RETURNTRANSFER] = true;

#是否重定向

$params[CURLOPT_FOLLOWLOCATION] = true;

#伪造浏览器

$params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';

curl_setopt_array($ch, $params);

$content=curl_exec($ch);

//输出网页内容

print_r($content);

//下面是整个curl采集类

class Curl{

#采集的地址

public $url;

#匹配的正则

public $preg;

#模拟登录需要的用户名

public $username;

#模拟登录需要的密码;

public $pwd;

#cookie存储的路径

private $cookie_path;

#采集数据的字符集

public $charset;

/**

* 构造方法,初始化采集基本信息

* @param $url  采集的url

* @param $preg 匹配的正则

* @param string $username  用户名

* @param string $pwd  密码

* @param string $charset 字符集

*/

public function __construct($info){

extract($info);

$this-url=$url;

$this-preg=$preg;

if(isset($charset)){

header("content-type:text/html;charset=".$this-charset);

}else{

header("content-type:text/html;charset=utf-8");

}

if(isset($username)){

$this-username=$username;

}

if(isset($pwd)){

$this-pwd=$pwd;

}

}

/*

* 采集数据,非表单提交方式,直接采集的

*/

public function get_info(){

#初始化curl

$ch=curl_init();

#请求url地址

$params[CURLOPT_URL]=$this-url;

#是否返回响应头信息

$params[CURLOPT_HEADER] = true;

#是否将结果返回

$params[CURLOPT_RETURNTRANSFER] = true;

#是否重定向

$params[CURLOPT_FOLLOWLOCATION] = true;

#伪造浏览器

$params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';

//判断是否有cookie,有的话直接使用

//if (isset($_COOKIE['cookie_jar']) ($_COOKIE['cookie_jar'] || is_file($_COOKIE['cookie_jar']))){

//    $params[CURLOPT_COOKIEFILE] = $_COOKIE['cookie_jar']; //这里判断cookie

//} else {

//    $cookie_jar = tempnam($this-cookie_path, 'cookie');                  //产生一个cookie文件

//    $params[CURLOPT_COOKIEJAR] = $cookie_jar;                       //写入cookie信息

//    setcookie('cookie_jar', $cookie_jar); //保存cookie路径

//}

#开始发送请求,传入curl参数

curl_setopt_array($ch, $params);

$content=curl_exec($ch);

preg_match_all($this-preg,$content,$arr);

return $arr;

}

/**

* 采集远程图片

* @param $img  图片路径  是一个数组

* @param $save_path   图片保存在你本地的路径

* @return bool

*/

public function get_img($img,$save_path){

for($i=0;$icount($img);$i++) {

$res=@file_get_contents($img[$i]);

$img_type=substr($img[$i], strrpos($img[$i], "."));

$path=$save_path.time().rand(1,9999999).mt_rand() .$img_type;

$img[$i] = $path;

file_put_contents($path,$res);

}

return $img;

}

//登录后采集

public function register_info(){

//采集的信息需要先登录的就要先模拟登录

//设置cookie保存路径

$ch = curl_init();

//组装用户名和密码

$info['username'] = $this-username;

$info['password'] = $this-pwd;

//模拟表单提交

$params[CURLOPT_URL] = $this-url;    //请求url地址

$params[CURLOPT_HEADER] = true; //是否返回响应头信息

$params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回

$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向

$params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';

$postfields = '';

//将表单要提交的数据编程URL拼接方式

foreach ($info as $key = $value){

$postfields .= urlencode($key) . '=' . urlencode($value) . '';

}

$params[CURLOPT_POST] = true;

$params[CURLOPT_POSTFIELDS] = $postfields;

//判断是否有cookie,有的话直接使用

if (isset($_COOKIE['cookie_jar'])($_COOKIE['cookie_jar']||is_file($_COOKIE['cookie_jar']))){

$params[CURLOPT_COOKIEFILE] = $_COOKIE['cookie_jar']; //这里判断cookie

}else{

$cookie_jar = tempnam($this-cookie_path, 'cookie'); //产生一个cookie文件

$params[CURLOPT_COOKIEJAR] = $cookie_jar; //写入cookie信息

setcookie('cookie_jar', $cookie_jar); //保存cookie路径

}

curl_setopt_array($ch, $params); //传入curl参数

$content = curl_exec($ch); //执行

return $content;

}

}

如何利用php抓取网站动态产生的数据

$url = "网站地址目录";

$queryServer = curl_init();

curl_setopt($queryServer, CURLOPT_URL, $url);

curl_setopt($queryServer, CURLOPT_HEADER, 0);

curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($queryServer, CURLOPT_RETURNTRANSFER, true);

curl_setopt($queryServer, CURLOPT_CONNECTTIMEOUT, 10);

curl_setopt($queryServer, CURLOPT_TIMEOUT, 30);

$html = curl_exec($queryServer);

$html = iconv('UTF-8','GBK//IGNORE',$html); //如果你需要是的数据是utf-8编码的,这一行可以注销,如果需要gbk编码的,请保留.如果出现乱码,就是一行的问题,你自己调着试吧

//echo $holder;exit; 此处可以输出来测试.

$html = str_replace(array("\n","\r","\t"),"",$html);

$preg = '/table\s+width=\"800\"[^]+(.*?)\/table/';

preg_match_all($preg,$html,$out);

//匹配每行

preg_match_all('/tr[^]+(.*?)\/tr/',$out[1][0],$tr);

//匹配每个td

$result = array();

$match = '/td.+([^]+)\/td/U';

foreach( $tr[0] as $key = $value ){

preg_match_all($match,$value,$arr);

$result[] = $arr[1];

}

//输出测试,$result就是你要的数据,至于你要怎么输出显示格式,那就随心调就好了。

foreach( $result as $key = $value ){

echo implode("\t",$value);

echo "br";

}

exit;

PHP怎样抓取网页代码中动态显示的数据

PHP Simple HTML DOM或者phpQuery可以直接取得某些div中的内容,里面有几个例子专门针对于网页抓取,调整好抓取频次,舍去已经存在的数据,你可以参考下

;id=57class=2


网站标题:php抓取某个网站数据 php获取网页数据
标题路径:http://cdweb.net/article/hjcghc.html