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

如何通过PHP后台运行Python网络爬虫并解决数据显示异常问题

搞定你的PHP+Python爬虫数据展示问题

嘿,看了你的问题和代码,发现两个关键问题让你看不到数据,咱们一步步来解决:

第一:先把PHP展示的字段名改对!

你Python爬虫往数据库插的是title(歌曲名)和artist(歌手),但PHP展示代码里写的是itemName和itemCost——这俩完全不搭啊!难怪数据库有数据页面也显示不出来,先把这个改了:

原展示代码:

<?php $no = 1; $total = 0; while ($row = mysqli_fetch_array($query)) { echo '<tr> <td>'.$no.'</td> <td>'.$row['itemName'].'</td> <td>'.$row['itemCost'].'</td> </tr>'; $no++; }?>

修改后:

<?php 
$no = 1; 
while ($row = mysqli_fetch_array($query)) { 
    echo '<tr> 
            <td>'.$no.'</td> 
            <td>'.$row['title'].'</td> 
            <td>'.$row['artist'].'</td> 
          </tr>'; 
    $no++; 
}
?>

第二:解决PHP调用Python脚本失败的问题

你说终端跑Python后页面能显示,说明爬虫本身没问题,但PHP调用时没执行成功,大概率是这几个原因:

1. Python路径不对

PHP运行的环境和你终端的环境不一样,可能找不到python命令。先在终端输which python3(或者which python)拿到绝对路径,比如/usr/bin/python3,然后把PHP里的exec改成这样:

// 把路径换成你自己的
exec("/usr/bin/python3 /full/path/to/your/3h.py 2>&1", $output, $return_var);
// 加上这行能看到执行时的错误信息
print_r($output);
echo "返回码:".$return_var;

2>&1是把错误输出转到标准输出,方便你排查脚本为啥跑不起来。

2. 权限不够

PHP一般是用www-data或者apache用户运行的,可能没权限读你的3h.py文件,给文件加权限:

chmod 755 /full/path/to/your/3h.py

另外,确保这个用户能访问数据库(不过你终端能跑,数据库权限应该没问题,但可以检查下)。

3. Python依赖缺失

你终端里的Python有bs4和pymysql,但PHP调用的Python环境可能没有。可以在Python脚本开头加一行import sys; print(sys.path),然后看PHP输出的$output里的路径,对比终端跑python3 -c "import sys; print(sys.path)"的结果,要是缺依赖,就用绝对路径装:

/usr/bin/python3 -m pip install beautifulsoup4 pymysql

4. PHP的exec被禁用了

检查你的php.ini文件,找disable_functions,看看有没有exec,有的话注释掉(注意服务器安全,别随便开)。

第三:优化你的PHP调用逻辑

原代码页面一加载就跑爬虫,容易卡顿还没反馈,改成用表单触发更合理:

<!DOCTYPE HTML>
<html>
<body>
<?php
if(isset($_POST['run_script'])){
    $python_path = "/usr/bin/python3"; // 换成你的Python绝对路径
    $script_path = __DIR__ . "/3h.py"; // 自动获取当前目录下的脚本路径
    exec("$python_path $script_path 2>&1", $output, $return_var);
    if($return_var == 0){
        echo "<p>爬虫执行成功!</p>";
    }else{
        echo "<p>爬虫执行失败,错误信息:</p>";
        echo "<pre>".implode("\n", $output)."</pre>";
    }
}
?>
<form method="post">
    <input type="submit" name="run_script" value="启动爬虫">
</form>
<a href="display.php">查看数据表格</a>
</body>
</html>

第四:给Python脚本补补小漏洞

  • 你的Python代码用的是Python2的from urllib import urlopen,如果系统默认是Python3,会报错,改成from urllib.request import urlopen
  • 数据库名带空格crawler database,有些MySQL版本会有问题,建议改成crawler_database,或者在连接时用反引号包起来:db='crawler database'

按这些步骤来,应该就能解决问题啦!


内容的提问来源于stack exchange,提问作者a.l

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:57:51