You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP与JavaScript实现动态网页爬虫,如何调用JS生成的目标URL?

结论:不能这么用

你当前的写法存在服务端、客户端脚本执行顺序的本质逻辑问题:

  • PHP是服务端执行语言,所有PHP代码会在你的页面内容发送到用户浏览器之前就全部运行完成
  • JS是客户端执行脚本,要等浏览器下载完整个页面内容、解析到对应JS代码时才会运行,此时服务端的PHP逻辑早就执行结束了
    你想让PHP拿JS生成的URL,相当于让后发生的动作给先发生的动作传参数,逻辑上完全走不通,所以$html = file_get_html("#demo");的写法没有任何作用。

正确实现方案

因为两个站点URL结构完全一致,你完全不需要用JS生成路径,直接在PHP侧就能拿到当前请求的路径拼接目标URL,修改后的代码逻辑如下:

1. 替换原头部的PHP爬取逻辑

把你原来写死目标URL的部分:

<?php include("simple_html_dom.php");
$html = file_get_html("www.website2.com/test-123");?>

改成动态拼接版本:

<?php 
include("simple_html_dom.php");
// 服务端直接获取当前请求路径,拼接目标站点URL
$target_url = "https://www.website2.com" . $_SERVER['REQUEST_URI'];
// 建议加个错误判断,避免请求失败时页面报错
if (!$html = file_get_html($target_url)) {
    echo "数据获取失败";
    exit;
}
?>

2. 删除无用的JS逻辑

你原来写的用来生成目标URL的JS脚本、id为demo的div都可以直接删掉,不需要再用。


注意事项

  • 拼接目标URL时一定要带上http://或https://前缀,否则file_get_html会把路径识别为本地文件路径,无法正确请求目标站点
  • 注意遵守目标站点的爬虫规则,不要高频发起请求,避免被目标站点封禁IP

内容的提问来源于stack exchange,提问作者Werty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:45:05