【问题标题】:PHP file_get_contents($url); field to open a stream only for some urlsPHP file_get_contents($url);字段仅针对某些 url 打开流
【发布时间】:2021-02-16 00:13:21
【问题描述】:

我有一个有效的代码

$html = file_get_contents('https://www.imdb.com/');
echo $html;

这个代码也可以工作

$html = file_get_contents('https://www.google.com/');
echo $html;

但它不适用于像这样的一些网址:

$html = file_get_contents('https://www.rottentomatoes.com/');
echo $html;

我得到了这个错误

Warning: file_get_contents(https://www.rottentomatoes.com/tv/friends): failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

我不明白为什么会这样? 并且网站在浏览器中加载没有问题,也不需要 vpn(但可能需要其他一些 url)。

我还使用了 Simple HTML DOM Parser,在 1.9 版本中我得到了这个错误,在 2.0RC2 版本中我得到了空的 $htmlNULL 值。

有人可以帮帮我吗?

【问题讨论】:

  • 可能duplicate
  • @berend 有点类似,但他们的回答是靠运气!
  • 网页抓取可能是一项复杂的任务,具体取决于站点及其为防止抓取而实施的解决方案,在可能的情况下:某些站点可能需要一些 cookie 作为保护(可以通过 curl 启用它们),他们还可以检查请求是否来自浏览器,只允许某些方法(例如 POST 或 GET),或者如果他们使用 JS 框架渲染页面,您可能会得到不完整的结果。添加细节可以帮助人们正确回答你
  • @Kaddath 感谢您提供有用的信息。在继续之前,我有点想知道为什么这个完全相同的代码适用于我在另一个国家的朋友,而不是 1 每次他运行它而不为我工作?也许取决于互联网连接?我不知道
  • @Kaddath 谢谢你,我会试试的,但没有太多关于网络抓取烂番茄的信息

标签: php web-scraping simple-html-dom


【解决方案1】:

您不能在任何网站上使用file_get_contents() 功能! 目前第二个网站https://www.rottentomatoes.com/ 拒绝你的连接

请阅读更多关于如何使用file_get_contents

【讨论】:

  • 那么 simple-html-dom 呢?我还测试了 php guzzle,我该如何解决这个问题?
  • 但这有点奇怪,我有一个朋友,他只是复制了我的代码和它对他的工作,他们如何不阻止他的请求!
  • 但他在不同的国家
  • @BurhanKashour 我尝试了我所知道的一切,然后在这里问我的问题。我还测试了cUrl 并设置了标题等内容,但这也不起作用
  • @BurhanKashour 我不记得真的可能是这个错误。但我会再次测试
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 2013-06-26
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多