Извлечь все, что выглядит как ссылки из большого количества данных в Python - PullRequest
2 голосов
/ 18 апреля 2010

У меня есть около 5 ГБ HTML-данных, которые я хочу обработать, чтобы найти ссылки на набор веб-сайтов и выполнить дополнительную фильтрацию. Прямо сейчас я использую простое регулярное выражение для каждого сайта и перебираю их, ища совпадения. В моем случае ссылки могут находиться за пределами тегов "a" и быть во многих отношениях плохо сформированными (например, \ n в середине ссылки), поэтому я стараюсь собрать как можно больше "ссылок" и проверить их позже в другие скрипты (поэтому не BeatifulSoup \ lxml \ etc). Проблема в том, что мой скрипт довольно медленный, поэтому я думаю о любых способах его ускорить. Я пишу набор тестов для проверки разных подходов, но надеюсь получить несколько советов:)

Сейчас я думаю о том, чтобы сначала получить все ссылки без фильтрации (возможно, с использованием модуля C или отдельного приложения, в котором не используется регулярное выражение, а простой поиск, чтобы получить начало и конец каждой ссылки), а затем использовать регулярное выражение для сопоставления с теми, которые я необходимо.

1 Ответ

1 голос
/ 18 апреля 2010

выходов.

  • Parallelise
  • Профилируйте свой код, чтобы увидеть узкое место. Результат часто удивляет.
  • Используйте одно регулярное выражение (объединение с использованием |), а не несколько.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...