简单的 html dom 无法打开站点的流 [英] simple html dom failed to open stream for a site
问题描述
我正在尝试通过 http://whatismyip.com 页面解析并获取我的位置(州和国家/地区).数据似乎在 <table class="table">
标签内,所以我正在寻找表格".但是我得到一个错误 Warning: file_get_contents(https://whatismyip.com): failed to open stream: HTTP request failed!HTTP/1.1 403 Forbidden in C:\xampp4\htdocs\scraping\libs\simple_html_dom.php on line 1081
I'm trying to parse throught http://whatismyip.com page and get my location (state and country). The data seems to be inside <table class="table">
tags, so i'm looking for "table".
But I get a mistake Warning: file_get_contents(https://whatismyip.com): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in C:\xampp4\htdocs\scraping\libs\simple_html_dom.php on line 1081
无法弄清楚出了什么问题.
Can't figure out what's wrong.
<?php
require_once('libs/simple_html_dom.php');
$html=new simple_html_dom();
$html->load_file('https://whatismyip.com');
$element=$html->find("table");
?>
推荐答案
该网站正在检查请求的 User-Agent
标头,但 PHP 不发送任何(默认情况下).您必须模拟"浏览器:
That website is checking the User-Agent
header of the request but PHP doesn't send any (by default). You'll have to "impersonate" a browser:
$context = stream_context_create(array(
'http' => array(
'header' => array('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201'),
),
));
$html = file_get_contents('http://whatismyip.com/', false, $context);
// do what you want with the $html
更好(更快)的选择是为此使用一些库.我以前使用过 GeoIP2-php,但我确定还有更多.
A better (and faster) option would be to use some library for this. I've used GeoIP2-php before but I'm sure there are more.
这篇关于简单的 html dom 无法打开站点的流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!