Я создаю scrapy spider, который проверяет наличие запаса некоторых продуктов в интернет-магазине.Звонок с PHP/Delphi со списком ссылок
Идея состоит в том, чтобы вызвать этого паука из кода PHP/Delphi, передав список продуктов (3500 ссылок). Затем паук возвращает другой список с информацией о запасе.
Это мой паук:
import scrapy
from scrapy.crawler import CrawlerProcess
class Spider(scrapy.Spider):
name = "Spider"
start_urls = ['https://www.url.net/Administration/Account/Login']
def parse(self, response):
return scrapy.FormRequest.from_response(
response,
formdata={'UserName': 'username', 'Password': 'password'},
callback=self.after_login
)
def after_login(self, response):
yield scrapy.Request(url="https://www.url.net/Home/Home/ShowPriceDetail?articleNo=" + REFERENCE, callback=self.parse_stock)
def parse_stock(self, response):
print("STOCK" + response.selector.xpath('//*[@id="priceDetails"]/form/div[8]/div[1]/span/span[2]/text()').extract_first())
print("Date" + response.selector.xpath('//*[@id="priceDetails"]/form/div[8]/div[1]/span/span[1]/i/@style').extract_first())
Итак ... Что такое правильный способ сделать это? Я знаю, что вы можете передать аргументы пауку использовать что-то вроде:
def __init__(self, product=None, *args, **kwargs):
super(Spider, self).__init__(*args, **kwargs)
И я знаю, что вы можете выполнить паук из другого питона сценария с CrawlerProcess. Кроме того, я знаю, что вы можете позвонить питон скрипт из PHP с помощью:
<?php
$command = escapeshellcmd('/home/myscript.py');
$output = shell_exec($command);
echo $output;
?>
Но я не знаю, как объединить все эти методы ...
Спасибо заранее.
Спасибо за ваш ответ Granitosaurus. Мне нравится эта идея. У меня есть другой вопрос, может быть, вы знаете ответ :) http://stackoverflow.com/questions/42416020/scrapy-performance Спасибо! –