Передача данных в Python Web Crawler из PHP Script - PullRequest
1 голос
/ 31 марта 2011

У меня есть сканер python, просматривающий несколько веб-страниц каждые несколько минут. Сейчас я пытаюсь реализовать пользовательский интерфейс, доступ к которому осуществляется через Интернет, и отображать данные, полученные сканером. Я собираюсь использовать php / html для интерфейса. В любом случае, пользовательскому интерфейсу нужна какая-то кнопка, которая запускает сканер для немедленного сканирования определенного веб-сайта (а не для ожидания следующей итерации сканирования).

Теперь, есть ли способ отправки данных из сценария php в запущенный сценарий python? Я думал о стандартном вводе / выводе, но не смог найти способ, которым это можно сделать (запись из одного процесса в другой процесс stdin). Затем я подумал об использовании общего файла, в который php записывает и python читает. Но тогда мне понадобится какой-то способ сообщить скрипту python, что в файл записаны новые данные, и способ сообщить скрипту php, когда сканер завершил свою задачу. Другим способом были бы сокеты - но тогда я думаю, что это было бы немного чрезмерно и не настолько просто, насколько это возможно.

Есть ли у вас какие-либо предложения, чтобы все было как можно проще, но все же позволяло мне отправлять данные из php-скрипта в работающий процесс python?

Заранее спасибо за любые идеи!

Edit: Я должен отметить, что сканер сохраняет полученные данные в базу данных sql, к которой php может получить доступ. Таким образом, передача данных из программы-обходчика python в скрипт php не составляет проблем. Это наоборот.

Ответы [ 3 ]

1 голос
/ 31 марта 2011

Лучший возможный способ удалить зависимости работы с разными языками - это использовать библиотеку очередей сообщений (например, rabbitMQ или ActiveMQ)

С его помощью вы можете отправлять прямые сообщения с php на python или наоборот ...

Если вы хотите простой выход, вам нужно изменить скрипт Python (подробнее о том, что сказал Фабрик), чтобы опросить базу данных (или файл) для каких-либо новых заданий ... и обработать его, если он его найдет. ...

0 голосов
/ 31 марта 2011

У меня хороший опыт использования стандартной библиотеки Python XML-RPC для обеспечения простого интерфейса RPC. Все, что вам нужно сделать, это запустить другой поток в скрипте Python, который будет обрабатывать запросы XML-RPC из кода PHP. PHP имеет достаточно развитую поддержку XML-RPC с http://phpxmlrpc.sourceforge.net/.

0 голосов
/ 31 марта 2011

Поскольку я не слишком много знаю о том, как работает python, просто отнеситесь к этому как к дикой идее.

  • Создайте на своем сервере XML, доступный как для Python, так и для PHP
  • На стороне PHP вы можете вставлять новые узлы в этот XML о новых URL-адресах с флагом processed=false
  • . Приходит Python и ищет необработанные задачи, затем выбирает данные и помещает источники в вашу базу данных
  • После успешного извлечения переключите флаг processed
  • Когда в следующий раз PHP коснется этого XML, удалите узлы с processed=true атрибутами

Надеюсь, это поможет вам в некотором роде.

...