为什么我不能从我的php codeigniter运行python硒脚本?

时间:2018-12-08 11:55:37

标签: php python codeigniter selenium selenium-webdriver

我正在构建一个基于PHP Web的简单刮板。 PHP提供了一个要抓取的关键字,我的python脚本执行该操作并将其写入JSON文件,然后我的PHP文件读取JSON。但我有一个问题,它在我的IDE上运行良好,但是当移至Codeigniter时,效果却不佳。

有两个问题:

  1. scraper脚本(使用硒)将无法运行

  2. 禁止访问(通过移动目录来解决)

禁止访问的错误消息:

A PHP Error was encountered

Severity: Warning

Message: file_get_contents(http://localhost/scraper/application/controllers/scrap-result.json): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
  

从IDE运行时,以下工作正常

script.php

$item= "thingtosearch";
$output = shell_exec('python C:\xampp\htdocs\selenium\crawler.py '.escapeshellarg($item).' '.escapeshellarg($item));

crawler.py

import sys
from selenium import webdriver
import json

url = "https://www.webtoscrape.com/search?%5Bkeywords%5D=" +sys.argv[1]
chromeOptions = webdriver.ChromeOptions()
prefs = {'profile.managed_default_content_settings.images':2}
chromeOptions.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions)
driver.get(url)
driver.implicitly_wait(10)
snippets = {'python': [], 'text': [], 'php': [], 'js': []}


#scraping goes here


driver.quit()
myfile = open('scrap-result.json','w+')
json.dump(snippets['js'], 
sys.exit(1)

但是当我将代码移至Codeigniter时,却没有

  

以下内容不起作用

script-controller-codeigniter.php的片段

$output = shell_exec('python C:\xampp\htdocs\selenium\crawler.py '.escapeshellarg($data['keyword']));
$filepath = base_url() ."application/controllers/scrap-result.json";
print($filepath); #to check if path is correct
$result= json_decode(file_get_contents( $filepath));
print_r($hasilscrape );

我转储了$ filepath(json文件的位置)并且是正确的。

我的操作系统是Windows,我使用的是XAMPP,我的所有代码都在本地PC中。

我的问题是:

  1. 什么原因导致硒无法运行?
  2. 即使在本地运行,是什么导致了禁止访问(通过移动目录来解决)

0 个答案:

没有答案