导航:首页 > 编程语言 > php抓取页面数据

php抓取页面数据

发布时间:2022-08-31 09:07:14

‘壹’ php 如何获取到一个网页的内容

1.file_get_contents
PHP代码

复制代码 代码如下:

<?php
$url = "http://www.jb51.net";
$contents = file_get_contents($url);
//如果出现中文乱码使用下面代码
//$getcontent = iconv("gb2312", "utf-8",$contents);
echo $contents;
?>

2.curl
PHP代码

复制代码 代码如下:

<?php
$url = "http://www.jb51.net";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//在需要用户检测的网页里需要增加下面两行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
?>

3.fopen->fread->fclose
PHP代码

复制代码 代码如下:

<?php
$handle = fopen ("http://www.jb51.net", "rb");
$contents = "";
do {
$data = fread($handle, 1024);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
echo $contents;
?>

注:
1.
使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置
allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。
2.使用curl必须空间开启curl。方法:windows下修改php.ini,将extension=php_curl.dll前面的分
号去掉,而且需要拷贝ssleay32.dll和libeay32.dll到C:\WINDOWS\system32下;Linux下要安装curl扩
展。

‘贰’ 怎么用phpquery抓取网页实时数据使用CI框架

phpquery和框架并无关系,我现在也是用CI的
先将pq引入进来
$content = file_get_content('https://personalbank.cib.com.cn/pers/main/pubinfo/ifxQuotationQuery.do');
phpQuery::newDocumentHTML($content);
$containers = pq("xxxx");就可以了,但你要抓取这个网站数据,他数据是js加载的,所以你只需要
$content = file_get_content('https://personalbank.cib.com.cn/pers/main/pubinfo/ifxQuotationQuery!list.do?_search=false&dataSet.nd=1440145968553&dataSet.rows=100&dataSet.page=1&dataSet.sidx=&dataSet.sord=asc');这个地址返回是json数据,你直接json_decode()就OK

‘叁’ PHP抓取网页指定内容

<?php
/*
* 如下: 方法有点笨
* 抓取网页内容用 PHP 的正则
* 用JS每隔5分钟刷新当前页面---即重新获取网页内容
*
* 注: $mode中--<title></title>-更改为所需内容(如 $mode = "#<a(.*)</a>#";>获取所有链接)
*
* window.location.href="http://localhost//refesh.php";中的http://localhost//refesh.php
* 更改为自己的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 = "http://www..com"; //目标站
$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="http://localhost//refesh.php";
}
setInterval("ref()",300000);
//-->
</script>

‘肆’ php获取网页源码内容有哪些办法

可以参考以下几种方法:

方法一: file_get_contents获取

<span style="white-space:pre"></span>$url="http://www..com/";

<span style="white-space:pre"></span>$fh= file_get_contents

('http://www.hxfzzx.com/news/fzfj/');<span style="white-space:pre"></span>echo $fh;

拓展资料

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。

用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;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(WindowsNT5.1;rv:9.0.1)Gecko/20100101Firefox/9.0.1';
curl_setopt_array($ch,$params);
$content=curl_exec($ch);
//输出网页内容
print_r($content);

//下面是整个curl采集类
classCurl{
#采集的地址
public$url;
#匹配的正则
public$preg;
#模拟登录需要的用户名
public$username;
#模拟登录需要的密码;
public$pwd;
#cookie存储的路径
private$cookie_path;
#采集数据的字符集
public$charset;

/**
*构造方法,初始化采集基本信息
*@param$url采集的url
*@param$preg匹配的正则
*@paramstring$username用户名
*@paramstring$pwd密码
*@paramstring$charset字符集
*/
publicfunction__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;
}
}
/*
*采集数据,非表单提交方式,直接采集的
*/
publicfunctionget_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(WindowsNT5.1;rv:9.0.1)Gecko/20100101Firefox/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图片保存在你本地的路径
*@returnbool
*/
publicfunctionget_img($img,$save_path){
for($i=0;$i<count($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;
}

//登录后采集
publicfunctionregister_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(WindowsNT5.1;rv:9.0.1)Gecko/20100101Firefox/9.0.1';
$postfields='';
//将表单要提交的数据编程URL拼接方式
foreach($infoas$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抓取页面内容

<?php
$rs=file_get_contents('http://www.boc.cn/sourcedb/whpj/enindex.html');
preg_match('/<tablewidth="600"border="0"cellpadding="5"cellspacing="1"bgcolor="#EAEAEA">(.*?)</table>/sS',$rs,$match);
//print_r($match);
$rs=str_replace(array('</tr>','</td>','<tralign="center">','<tdbgcolor="#FFFFFF">'),array('|',';'),$match[1]);
//www.hi-docs.com/php/str_replace.html
$data=array();
$rs=explode('|',$rs);
foreach($rsas$key=>$item){
if($key>0){
$arr=explode(';',$item);
($a=@trim($arr[0]))&&($b=@trim($arr[5]))&&$data[]=array($a,$b);
}
}
print_r($data);
?>

‘柒’ 如何用php代码循环抓取其他页面的内容

1.用file_get_contents提取网后后用正则找出总页数
2.程序自动写出分页的代码放入到数组或数据库
3.再用file_get_contents循环数据库

原理就是如上

‘捌’ 用php 怎么抓取js+ajax动态生成的页面内容

第一步,查看网页源代码,找到ajax请求的URL。
比如,js代码为:
$.ajax({
url: 'ajax.php?id=100',
data: {ad_num:num,ad_str:str,cart_update_time:cart_update_time},
type: 'POST',
dataType: 'text',
async : false,
success: function(data){

}
其中的ajax.php?id=100就是ajax请求的URL。

第二步,拼接URL,用网站的域名加上这个找到的请求路径。
比如,网站域名为: www.abc.com 拼接后的URL为:www.abc.com/ajax.php?id=100

第三步,用PHP读取第二步拼接出的URL即可。

‘玖’ PHP获取网页内容的几种方法

简单的收集下PHP下获取网页内容的几种方法:
用file_get_contents,以get方式获取内容。
用fopen打开url,以get方式获取内容。
使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展。
用file_get_contents函数,以post方式获取url。
用fopen打开url,以post方式获取内容。
用fsockopen函数打开url,获取完整的数据,包括header和body。

‘拾’ php怎么抓取其它网站数据

可以用以下4个方法来抓取网站 的数据:

1. 用 file_get_contents 以 get 方式获取内容:
?

$url = 'http://localhost/test2.php';
$html = file_get_contents($url);
echo $html;

2. 用fopen打开url,以get方式获取内容
?

$url = 'http://localhost/test2.php';
$fp = fopen($url, 'r');
stream_get_meta_data($fp);
$result = '';
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}
echo "url body: $result";
fclose($fp);

3. 用file_get_contents函数,以post方式获取url
?

$data = array(
'foo'=>'bar',
'baz'=>'boom',
'site'=>'www.jb51.net',
'name'=>'nowa magic');

$data = http_build_query($data);

//$postdata = http_build_query($data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $data
//'timeout' => 60 * 60 // 超时时间(单位:s)
)
);

$url = "http://localhost/test2.php";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);

echo $result;

4、使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展

$url = 'http://localhost/test2.php?site=jb51.net';
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;

阅读全文

与php抓取页面数据相关的资料

热点内容
hexophp 浏览:271
用什么app买东西半价 浏览:62
苹果下载的pdf文件怎么打开 浏览:211
如何在服务器上隐藏源站地址 浏览:645
单片机进制字母对应表 浏览:528
向某人下命令 浏览:627
编程中删除数组中的数 浏览:86
aes对称加密反编译 浏览:550
java编译成exe 浏览:190
gps处理算法 浏览:596
什么app可以和对象存钱 浏览:146
java字符串表达式计算 浏览:330
javacmd环境变量 浏览:51
电视上面找不到全民歌app怎么办 浏览:156
单片机中psw0 浏览:994
优酷视频加密么 浏览:763
本地连接dos命令 浏览:206
云服务器怎么上传金币房卡游戏 浏览:71
Python快递管理可视化 浏览:419
java正则验证数字 浏览:830