2017-08-28 26 views
0

我最近纔剛剛開始用Python編寫代碼,所以如果事情最終成爲一個簡單的問題,並且我一直在查找錯誤的關鍵字,我就提前致歉。從Python中傳遞scraped page_source到PHP

本質上,我使用python和selenium創建一個刮板,並且只是想將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腳本, 「打印(結果)」 的作品完美。
  2. 如果我運行PHP文件,它會打印出Hello World。

所以這個問題似乎是我對如何在Python中準備結果的理解,以便可以傳遞給PHP。

我非常感謝您的協助或指引我朝着正確的方向發展。

非常感謝提前。

+0

按照精確的文檔中有'selenium'沒有必要,如果你不必等待'頁JavaScript'執行。您可以簡單地['import requests'](http://docs.python-requests.org/en/master/),然後將頁面源代碼作爲'result = requests.get(「http://craiglist.com」) .content' – Andersson

+0

@Andersson是的,那是真的。我在學習時只使用craiglist作爲例子。但我希望學習和使用硒,這樣我就可以在未來使用JavaScript加載網站。 –

回答

1

的問題是,如果return_var參數與輸出參數一起存在,那麼,所執行的命令的返回狀態將被寫入你沒有看過EXEC的文件

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

return_var 到這個變量。

這裏https://secure.php.net/manual/en/function.exec.php

+0

感謝您的回覆。我嘗試了你的解決方案,但仍然得到一個空的結果,除了Hello World「Hello Worldarray(1){[0] => string(12)」Hello World「}」。 –

+0

我在我的機器上運行了代碼,它工作正常。你是運行它作爲一個網頁或作爲一個PHP CLI腳本? –

+0

我正在將它作爲網頁運行。 –