
正文
php跨域采集网页数据 php设置跨域访问
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎么用php采集网站数据
简单的分了几个步骤:
1、确定采集目标
2、获取目标远程页面内容(curl、file_get_contents)
3、分析页面html源码,正则匹配你需要的内容(preg_match、preg_match_all),这一步最为重要,不同页面正则匹配规则不一样
4、入库
相关问答
Q1: php怎么抓取其它网站数据
可以用以下4个方法来抓取网站 php跨域采集网页数据的数据:
1. 用 file_get_contents 以 get 方式获取内容:
?
$url = '';
$html = file_get_contents($url);
echo $html;
2. 用fopen打开urlphp跨域采集网页数据,以get方式获取内容
?
$url = '';
$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'='',
'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 = "";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
4、使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展
$url = '';
$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;
Q2: PHP如何实现跨域
因工作需要php跨域采集网页数据,客户端软件php跨域采集网页数据的一些界面用HTML+CSS+Javascript实现,这些文件放在客户端本地,以本地文件形式加载,但是有些情况下,需要连接服务器取得一些信息,如果不做任何处理,则请求失败,返回的信息如下:
No
'Access-Control-Allow-Origin'
header
is
present
on
the
requested
resource.
Origin
'null'
is
therefore
not
allowed
access.
这是因为浏览器跨域策略起作用,阻止了跨域的请求。看看HTTP请求过程就知道。第一次请求后端时候,浏览器意识到是访问一个跨与资源,没有直接发送GET请求获取数据,而是发送了一个OPTIONS请求询问是否可以访问该资源。我们称之为Preflight请求,默认因为同源策略的存在,该请求返回的Header中没有'Access-Control-Allow-Origin'属性,所以访问失败。
如果要实现跨域,关键在于服务器,客户端的代码按照正常的方式编写即可。对于服务器,只需要在收到OPTIONS请求的地方,返回的头信息中增加该属性即可,代码如下:
header("Access-Control-Allow-Origin:
*");
注意,一定要在所有信息输出到客户端之前设置。
以上所述是小编给大家介绍的PHP如何实现跨域的相关内容,希望对大家有所帮助php跨域采集网页数据!
Q3: PHP跨域获取json数据的方法,PHP里面有没有类似ajax的函数?
php中的文件读写函数基本上都可直接支持url,也就是说你可以像操作本地文件一样直接操作其他网站的文件(当然只是读取,写入是不可能的),而且没有任何跨域限制,比如下面一行代码就可直接读取百度首页的html代码:
$bd=file_get_contents("");
如果想获取json数据,只需把网址换一下即可。当然,还需要做一下格式转换,php本身就有专门的json转换函数:
$json=json_decode(file_get_contents("网址"),true);
这样一看,是不是比前端的ajax还要简单百倍?!
Q4: php怎样实现跨域操作?
服务器端PHP跨域一般没有限制,不像浏览器端有same origin policy。
把服务器B中的代码封装一下,确定好输入和输出,比如输入是一个HTTP Request,参数POST过去;输出是从HTTP Response返回一段XML。之后在服务器A的代码中做一个对服务器B的HTTP请求并处理返回的XML就好了。
有问题请追问~
Q5: 怎么用php跨域获取内容
php不存在跨域问题,只有前段语言才会有.
php里面 curl 就是跨域请求数据的内置函数,它可以post,get,file都能实现。请求地址的时候注意加上http/https
关于php跨域采集网页数据和php设置跨域访问的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






