php可以抓取网页数据吗(,获取访问的最佳方法是什么?(图) )
优采云 发布时间: 2022-02-20 14:16php可以抓取网页数据吗(,获取访问的最佳方法是什么?(图)
)
例如,这是一个“页面”:
该页面有一个 RSS 提要(理想情况下我想使用它),但是 a) 它的浏览器嗅探意味着我需要从脚本中伪造用户代理来获取它 - 这感觉非常脆弱 b) 的质量返回的数据真的很糟糕。
我可以使用图形 api 来获取相同的数据吗?这个网址:
暗示我可以,json 对我来说很好,尽管我是从 PHP 脚本而不是客户端获取它。但是,当我为我的实际页面尝试该 URL 时,我得到以下信息:
1{
2 "error": {
3 "type": "OAuthAccessTokenException",
4 "message": "An access token is required to request this resource."
5 }
6}
7
我不明白为什么我的页面需要访问令牌,而其他页面“更公开” - 这是页面上的一些配置吗?如果不是,那么获取访问密钥的最佳方式是什么 - 请注意,这不是一个需要页面所有者进行身份验证的交互式脚本。
如果我尝试通过 CURL 访问 URL,它在 PHP 中对我来说很好。
1$curlResponse = http('https://graph.facebook.com/facebook/feed');
2$facebookFeed = json_decode($curlResponse['data'], true);
3
4var_dump($facebookFeed);
5
使用这个 PHP 函数:
1function http($url) {
2 $timeout = 30;
3 $connectTimeout = 30;
4 $sslVerifyPeer = false;
5
6 $response = array();
7 $ci = curl_init();
8
9 /* Curl settings */
10 curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $connectTimeout);
11 curl_setopt($ci, CURLOPT_TIMEOUT, $timeout);
12 curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
13 curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
14 curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $sslVerifyPeer);
15 curl_setopt($ci, CURLOPT_URL, $url);
16
17 $response['http_code'] = curl_getinfo($ci, CURLINFO_HTTP_CODE);
18 $response['api_call'] = $url;
19 $response['data'] = curl_exec($ci);
20
21 curl_close ($ci);
22
23 return $response;
24}
25