Запись более быстрого паука Python

не будет самым коротким, но я должен был попробовать что-то... Строка C#

[] f = новая строка [0]; Основной (f);

бит короче

static void Main(){Main();}
6
задан Kara 14 April 2014 в 20:17
поделиться

6 ответов

Вы можете использовать MapReduce , как это делает Google, либо через Hadoop (в частности, с Python: 1 и 2) ), Disco или Happy .

Традиционный образ мышления - напишите свою программу на стандартном Python, если вы обнаружите, что она слишком медленная, профилируйте его и оптимизируйте конкретные медленные участки. Вы можете ускорить эти медленные участки, перейдя на C, используя C / C ++ расширения или даже ctypes .

Если вы просматриваете только один сайт, рассмотрите возможность использования wget -r ( пример ).

10
ответ дан 8 December 2019 в 04:08
поделиться

Где вы храните результаты? Вы можете использовать облачную библиотеку PiCloud , чтобы легко распараллелить парсинг на кластере серверов.

5
ответ дан 8 December 2019 в 04:08
поделиться

Обращать внимание на чей-то сайт с миллионами запросов - не очень вежливо. Можете ли вы вместо этого попросить у веб-мастера архив сайта? После того, как он у вас есть, это простой вопрос поиска текста.

3
ответ дан 8 December 2019 в 04:08
поделиться

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

3
ответ дан 8 December 2019 в 04:08
поделиться

Поскольку вы новичок в Python, я думаю, что следующее может быть полезно для вас:)

  • если вы пишете регулярное выражение для поиска определенного шаблона на странице, скомпилируйте свое регулярное выражение везде, где можете, и повторно используйте скомпилированный объект
  • BeautifulSoup - это синтаксический анализатор HTML / XML, который может быть полезно для вашего проекта.
5
ответ дан 8 December 2019 в 04:08
поделиться

Что сказал Адам. Я сделал это однажды, чтобы составить карту сети Ксанги. Я сделал это быстрее, используя потокобезопасный набор, содержащий все имена пользователей, которые мне приходилось искать. Затем у меня было около 5 потоков, одновременно выполняющих запросы и обрабатывающих их. Вы собираетесь потратить гораздо больше времени на ожидание страницы для DL, чем на обработку любого текста (скорее всего), поэтому просто найдите способы увеличить количество запросов, которые вы можете получить одновременно.

0
ответ дан 8 December 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: