Crawler Coding: определить, были ли просканированы страницы? - PullRequest
1 голос
/ 28 августа 2010

Я работаю над сканером в PHP, который ожидает m URL-адресов, по которым он находит набор n ссылок на n страниц (внутренних страниц), которые сканируются на данные. Ссылки могут быть добавлены или удалены из набора ссылок n . Мне нужно отслеживать ссылки / страницы, чтобы я знал, какие из них были просканированы, какие удалены, а какие новые.

Как мне отслеживать, какие страницы m и n сканируются, чтобы при следующем сканировании выбирались новые URL-адреса, повторно проверялись все еще существующие URL-адреса и игнорировались устаревшие URL-адреса?

1 Ответ

1 голос
/ 28 августа 2010

Если вы хотите хранить эти данные на длительный срок, используйте базу данных.Вы можете хранить m просканированных URL-адресов и их n-адресов в базе данных с их статусами.Когда вы собираетесь снова сканировать, сначала проверьте базу данных на предмет просканированных URL.

Например:

Сохраните свои mURL в mtable примерно так:

 id |        mURL           | status       |    crawlingDate
------------------------------------------------------------------
 1  | example.com/one.php   | crawled      |   01-01-2010 12:30:00
 2  | example.com/two.php   | crawled      |   01-01-2010 12:35:10
 3  | example.com/three.php | not-crawled  |   01-01-2010 12:40:33

Теперь получите каждый mURL из mtable , получите все n URL и сохраните его в ntable примерно так:

 id |        nURL             | mURL_id |  status      | crawlingDate
----------------------------------------------------------------------------
 1  | www.one.com/page1.php   |    1    |  crawled     | 01-01-2010 12:31:00
 2  | www.one.com/page2.php   |    1    |  crawled     | 01-01-2010 12:32:00
 3  | www.two.com/page1.php   |    2    |  crawled     | 01-01-2010 12:36:00
 4  | www.two.com/page2.php   |    2    |  crawled     | 01-01-2010 12:37:00
 5  | www.three.com/page1.php |    3    |  not-crawled | 01-01-2010 12:41:00
 6  | www.three.com/page2.php |    3    |  not-crawled | 01-01-2010 12:42:00

При следующем сканировании сначала извлеките все записи из mtable одну за другой и получите все nURL из каждой mURL.Теперь сохраните все nURL в ntable , если он еще не существует.Теперь начните сканирование каждого nURL, чтобы получить данные, где статус не сканируется, и установите статус crawled , когда закончите.Когда все nURL для одного mURL будут выполнены, вы можете установить статус crawled для этого mURL в mtable .

Если вы не хотите использоватьбазы данных и хотите запустить сканер раз и навсегда, тогда вы можете использовать эту логику в массивах.

Возможно, это поможет вам определить направление.

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