将Python中的page_source传递给PHP

时间:2017-08-28 09:58:25

标签: php python selenium

我最近刚刚开始使用Python编写代码,所以如果最终成为一个简单的问题并且我一直在查找错误的关键字,我会提前道歉。

基本上我使用python和selenium创建一个scraper,只是想将DOM返回给PHP,以便我可以操作数据并插入到我的数据库中。到目前为止,我已成功地在python中检索数据,但我的问题似乎在于将结果返回到PHP中。我得到一个空白的结果。

我的代码如下。

PHP

<?php
$result = exec('/usr/bin/python3 get_files.py');
print_r($result);
?>

的Python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import TimeoutException
import time
import json

from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 800))  
display.start()

chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-setuid-sandbox")
driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get('http://craiglist.com')

result = driver.find_element_by_xpath("//*").get_attribute("outerHTML")

driver.quit()

print('Hello World')

print(result)

现在我知道这是有效的,因为:

  1. 如果我直接执行python脚本,&#34; print(result)&#34;效果很好。
  2. 如果我运行PHP文件,它会打印出Hello World。
  3. 所以问题似乎是我对如何在python中准备结果的理解,以便可以传递给PHP。

    我非常感谢您的帮助或指导我朝着正确的方向前进。

    非常感谢提前。

1 个答案:

答案 0 :(得分:1)

问题是您还没有阅读exec的文档

$return = null;
$result = exec('/usr/bin/python3 get_files.py', $return);
print_r($result);
var_dump($return);
  

return_var   如果return_var参数与输出参数一起出现,则执行命令的返回状态将写入此变量。

请按照https://secure.php.net/manual/en/function.exec.php

中的确切文档进行操作