Парсер Ebay лотов по ключевым словам
Язык реализации: PHP
Заказ предусматривает 3 этапа реализации.
Этапы олачиваются по мере исполнения.
Этап 1
Реализовать HTTP клиент для парсинга с возможностью динамической смены
IP и User_Agent (далее U_A)
Объект клиента должен реализовывать методы:
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
getResponse(ServerRequestInterface $request); // возвращает ResponseInterface
changeIp($ipOptions = null); //меняет IP используемый при запросе.
changeUa($uaOptions = null); //меняет U_A, используемый при запросе.
changeHeaders(array $headers = null); //headers используемые при запросе.
getRequest($url); //использует значения $headers, $ip, $ua установленные ^^^выше^^^.
isBanned($response) {return false;} // точка расширения
getHtml($url); //возвращает контент страницы преодолевая ошибки и баны.
Для генерации U_A использовать библиотеку https://github.com/phpfail/UserAgentGenerator
Для получения новых прокси IP использовать CSV файл. IP для него взять тут: http://spys.one/free-proxy-list/US/
Этап 2
Реализовать парсер выдачи Ebay и парсер лота
Объект клиента должен реализовывать методы:
getEbaySearchResults($uri) //где $uri может быть = "_nkw=tusk&_sacat=6000&_sop=2"
//возвращает массив найденных лотов. Для каждого лота возвращает:
//url, urlOfImg title, price, shipping и если есть - Watching, Sold, SellerId, SellerScore, #Item
//парсим библиотекой http://simplehtmldom.sourceforge.net/
//примеры - http://parsing.valemak.com/ru/php/library/php-simple-html-dom-parser/quick-start/
saveEbaySearchResults($store = null) //пишет результаты поиска в CSV файл с именем $store
makeEbayUrlByItemId($id) //результат типа http://www.ebay.com/itm/12345678912
getEbayItemByUrl($url) //Возвращает массив с параметрами лота:
//ItemId, SellerId, title, price, shipping, category, imgUrl1...imgUrl8,
//compatibility(array), specifics(array), если есть - Watching, Sold,
//коды для compatibility тут:
// https://www.ebay.co.uk/pages/help/sell/contextual/master-vehicle-list-manually.html
saveEbayItem($store = null) //пишет параметры лота в CSV файл с именем $store
Этап 3
Написать краулер - логику обхода лотов парсером, логирование ошибок, автоподгрузку новых проксиIP, REST интерфейс к сервису.
Подробное задание будет предоставлено после окончания первого этапа.