简单的 html dom 无法打开站点的流 [英] simple html dom failed to open stream for a site

查看:15
本文介绍了简单的 html dom 无法打开站点的流的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆