Доброго времени суток!
На работе поставили задачу: есть определенные сайты надо "взять с них информацию" как это сделать через парсинг? (чтобы не делать тупо копи-паст!), причем инфу нужно будет вставить либо в excel либо в карточку товара 1С?
Возможно ли это вообще......?
Дмитрий Мальнев: Готовая прога для произвольного сайта, которой не надо никак объяснять что выдирать и что потом с этим делать? Сами в такое верите? :-)
Я пробовал на Python+Grab за два вечера наваял парсер для лостфильма, который собирал всю информацию и картинки о сериалах. Сохранялось все в exel. Изучить достаточно легко.
В зависимости от того что вы вкладываете в значения слова парсинг, парсить- получать страницы можно курлом, а парсить- анализировать дом через simple html Dom parser.
Я использую многопоточно CURL (мультикурл) через proxy - для того чтобы получить контент предположим с 100-500 страниц за 3-5 секнд. И PHP DomDocument + DomXPath для выпаршивания.
Разрабатывал я когда-то универсальный кикабельный парсер веб-ресурсов с модулем паука на борту. Проект был коммерчески большего масштаба, по-этому мне кажется не хорошо выкладывать хорошо документированный ООП код в сеть в свободный доступ, все-таки денги за это платились не малые. Я поделюсь отдельными частями проекта:
/**
* Class Web_Processor - мультипоточный загрузчик!
*
* !!!!! - Будет зависать если идет работа с сессией! делдать session_write_close() перед вызовом!
*
*/
class Web_Processor {
protected $conf;
/** var \Web_Response[]*/
protected $response = array();
public function __construct(array $urls, Web_Configurator &$conf){//multi thread
$this->conf = &$conf;
// инициализируем "контейнер" для отдельных соединений (мультикурл)
$cmh = curl_multi_init();
// массив заданий для мультикурла
$tasks = array();
// перебираем наши урлы
foreach ($urls as $url) {
// инициализируем отдельное соединение (поток)
$ch = curl_init($url); //URL запроса
// если будет редирект - перейти по нему
curl_setopt($ch, CURLOPT_AUTOREFERER, $_autoreferrer); //для автоматической установки поля Referer: в запросах, перенаправленных заголовком Location:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $_follow_loc); //для следования любому заголовку "Location: ", отправленному сервером в своем ответе (учтите, что это происходит рекурсивно, PHP будет следовать за всеми посылаемыми заголовками "Location: ", за исключением случая, когда установлена константа CURLOPT_MAXREDIRS
curl_setopt($ch, CURLOPT_MAXREDIRS, $_max_redirects); //Максимальное количество принимаемых редиректов. Используйте этот параметр вместе с параметром CURLOPT_FOLLOWLOCATION
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //FIX для "HTTPS://" - без цього не хоче грузити контент
curl_setopt($ch, CURLOPT_HEADER, 0); // TRUE для включения заголовков в вывод.
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $_connection_timeout); // Количество секунд ожидания при попытке соединения. Используйте 0 для бесконечного ожидания.
curl_setopt($ch, CURLOPT_TIMEOUT, $_curl_timeout); //Максимально позволенное количество секунд для выполнения cURL-функций
//
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // TRUE для возврата результата передачи в качестве строки из curl_exec() вместо прямого вывода в браузер.
curl_setopt($ch, CURLINFO_HTTP_CODE, true); // ВОЗВРАТ КОДОВ СОСТОЯНИЯ