提问人:ALY ELTURKY 提问时间:9/11/2022 更新时间:9/11/2022 访问量:372
无法打开流:HTTP 请求失败 php
Failed to open stream: HTTP request failed php
问:
我是PHP新手
我正在尝试制作简单的脚本来抓取产品名称和价格
我正在使用 HTML DOM 解析器
它给出了 2 个错误
警告:file_get_contents(https://eg.iherb.com/pr/california-gold-nutrition-sport-whey-protein-isolate-1-lb-16-oz-454-g/71031):无法打开流:HTTP 请求失败!HTTP/1.1 403 禁止在 C:\xampp\htdocs\demo\simple_html_dom.php 行 1556 上
致命错误:未捕获的错误:调用 C:\xampp\htdocs\demo\simple_html_dom.php:1582 中 null 的成员函数 find() 堆栈跟踪:#0 C:\xampp\htdocs\demo\index.php(15):simple_html_dom->find('a') #1 {main} 抛入 C:\xampp\htdocs\demo\simple_html_dom.php 在线 1582
脚本无法打开产品的链接,我也无法实现 2 个元素来找到它们然后回显它们
请帮我:)
这是代码
include_once("simple_html_dom.php");
// set target url to crawl
$url = 'https://eg.iherb.com/pr/california-gold-nutrition-sport-whey-protein-isolate-1-lb-16-oz-454-g/71031'; // change this
// open the web page
$html = new simple_html_dom();
$html->load_file($url);
foreach($html->find("price-inner-text") as $price);
foreach($html->find("h1#name") as $productname);
?>
答:
403 HTTP 状态意味着他们知道你在做什么,给了你 403 来关闭你。
我检查了您使用的页面 URL,关闭了浏览器的 javascript 和呈现但未包含产品信息的页面。
但我仍然得到了 HTML 和 JavaScript 代码。
你唯一的希望是它在javaScript的某个地方包含你正在寻找的数据。
如果数据可用,则需要使用 curl 来获取页面。您必须初始化 curl 的选项,以使请求看起来与浏览器发出请求完全相同。
您现在需要做的是关闭浏览器的 javascript 转到该页面。使用浏览器的视图源并将源复制到文本编辑器中,然后搜索所需的值。
这是没有 javascript 的页面的样子。
评论