Какие библиотеки веб-сканеров PHP доступны? - PullRequest
9 голосов
/ 30 января 2011

Я ищу надежные, хорошо документированные скрипты PHP для веб-сканирования. Возможно порт PHP проекта Java - http://wiki.apache.org/nutch/NutchTutorial

Я ищу как бесплатные, так и несвободные версии.

Ответы [ 8 ]

4 голосов
/ 15 апреля 2013

https://github.com/fabpot/Goutte также является хорошей библиотекой, совместимой со стандартом PSR-0.

4 голосов
/ 30 января 2011

Просто попробуйте Snoopy .

Выдержка: "Snoopy - это PHP-класс, который имитирует веб-браузер. Он автоматизирует задачу получения содержимого веб-страницы и публикации форм, например. "

2 голосов
/ 03 января 2017

Существует большой учебник здесь , который объединяет guzzlehttp и symfony / dom-crawler

В случае потери ссылки здеськод, который вы можете использовать.

use Guzzle\Http\Client;
use Symfony\Component\DomCrawler\Crawler;
use RuntimeException;

// create http client instance
$client = new GuzzleHttp\ClientClient('http://download.cloud.com/releases');

// create a request
$response = $client->request('/3.0.6/api_3.0.6/TOC_Domain_Admin.html');

// get status code
$status = $response->getStatusCode();

// this is the response body from the requested page (usually html)
//$result = $response->getBody();

// crate crawler instance from body HTML code
$crawler = new Crawler($response->getBody(true));

// apply css selector filter
$filter = $crawler->filter('div.apismallbullet_box');
$result = array();

if (iterator_count($filter) > 1) {

    // iterate over filter results
    foreach ($filter as $i => $content) {

        // create crawler instance for result
        $cralwer = new Crawler($content);
        // extract the values needed
        $result[$i] = array(
            'topic' => $crawler->filter('h5')->text();
            'className' => trim(str_replace(' ', '', $result[$i]['topic'])) . 'Client'
        );
    }
} else {
    throw new RuntimeException('Got empty result processing the dataset!');
}
2 голосов
/ 30 января 2011

Я использовал Simple HTML DOM около 3 лет, прежде чем обнаружил phpQuery .Это намного быстрее, не работает рекурсивно (на самом деле вы можете сделать это) и полностью поддерживает селекторы и методы jQuery.

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

Вы можете использовать PHP Простой HTML DOM Parser . Это действительно просто и полезно.

1 голос
/ 07 июня 2018

Я знаю, что это немного старый вопрос. С тех пор появилось много полезных библиотек.

Дайте ему шанс Crawlzone . Это быстрый, хорошо документированный, асинхронный фреймворк для сканирования интернета с множеством замечательных функций:

  • Асинхронное сканирование с настраиваемым параллелизмом.
  • Автоматическое регулирование скорости сканирования в зависимости от загрузки просматриваемого веб-сайта.
  • Если настроено, автоматически отфильтровывает запросы, запрещенные стандартом исключения robots.txt.
  • Простая промежуточная система позволяет добавлять заголовки, извлекать данные, фильтровать или подключать любые пользовательские функции для обработки запроса и ответа.
  • Богатые возможности фильтрации.
  • Возможность задания глубины сканирования
  • Легко расширить ядро, подключившись к процессу сканирования, используя события.
  • Вы можете в любой момент выключить сканер и начать все заново, не теряя прогресса.

Также ознакомьтесь со статьей, которую я написал об этом:

https://www.codementor.io/zstate/this-is-how-i-crawl-n98s6myxm

1 голос
/ 30 марта 2013

если вы думаете о сильном базовом компоненте, попробуйте http://symfony.com/doc/2.0/components/dom_crawler.html

это удивительно, с такими функциями, как селектор CSS.

0 голосов
/ 12 февраля 2013

Никто не упомянул wget как хорошую отправную точку?.

wget -r --level=10 -nd http://www.mydomain.com/

Подробнее @ http://www.erichynds.com/ubuntulinux/automatically-crawl-a-website-looking-for-errors/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...