PHP Magento Screen Scraping - PullRequest
       3

PHP Magento Screen Scraping

2 голосов
/ 04 января 2011

Я пытаюсь очистить сайт поставщиков, чтобы сэкономить время из-за наличия около 2000 продуктов, для которых мне нужно собрать информацию.Я полностью согласен с написанием скребка для экрана почти для всего, но я столкнулся с серьезной проблемой.Я использую get_file_contents, чтобы собрать html страницы продукта.

Проблема:

Вы должны войти в систему, чтобы просмотреть страницу продукта.Это стандартная регистрация в magento, так как я могу обойти это в моем скребке экрана?Мне не нужен полный сценарий, просто совет по методу.

Ответы [ 2 ]

2 голосов
/ 04 января 2011

Используя stream_context_create , вы можете указать заголовки, которые будут отправляться при вызове вашего file_get_contents.

Что бы я предложил, откройте браузер и войдите на сайт. Откройте Firebug (или ваш любимый просмотрщик файлов cookie), возьмите файлы cookie и отправьте их с вашим запросом.

Редактировать: вот пример из PHP.net:

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>

Редактировать (2): Это выходит за рамки вашего вопроса, но если вы хотите знать, как очистить сайт, вы можете обратиться к методу DOMDocument :: loadHTML . По сути, это даст вам необходимые функции (например, запрос XPath , getElementsByTagName , getElementsById ) для очистки того, что вам нужно.

Если вы хотите очистить что-то простое, вы также можете использовать RegEx с preg_match_all .

0 голосов
/ 04 января 2011

Если вы знакомы с CURL, это должно быть относительно просто сделать за день или около того.Я создал несколько похожих приложений для входа в банки для получения данных, которые, конечно, также требуют аутентификации.

Ниже приведена ссылка с примером того, как использовать CURL с файлами cookie для целей аутентификации:

http://coderscult.com/php/php-curl/2008/05/20/php-curl-cookies-example/

Если вы можете получить выходные данные страницы, вы можетепроанализируйте ваши результаты с помощью регулярного выражения.Кроме того, вы можете использовать такой класс, как Snoopy, чтобы выполнить эту работу за вас:

http://sourceforge.net/projects/snoopy/

...