Веб-выскабливание Google App Engine

Теоретически обоснованная версия того, что вы пытаетесь сделать, называется Ахо-Корасик . Реализация суффиксных ссылок является довольно сложной задачей IIRC, так что вот алгоритм, который просто использует три.

Мы употребляем текст по буквам. Мы всегда поддерживаем набор узлов в дереве, где может быть проход. Первоначально этот набор состоит только из корневого узла. Для каждой буквы мы перебираем узлы в наборе, спускаясь по новой букве, если это возможно. Если получающийся узел совпадает, замечательно, сообщите об этом. Независимо от этого, поместите его в следующий набор. Следующий набор также содержит корневой узел, так как мы можем начать новое сопоставление в любое время.

Вот моя попытка быстрой реализации на Python (без проверки, без гарантии и т. Д.).

class Trie:
    def __init__(self):
        self.is_needle = False
        self._children = {}

    def find(self, text):
        node = self
        for c in text:
            node = node._children.get(c)
            if node is None:
                break
        return node

    def insert(self, needle):
        node = self
        for c in needle:
            node = node._children.setdefault(c, Trie())
        node.is_needle = True


def count_matches(needles, text):
    root = Trie()
    for needle in needles:
        root.insert(needle)
    nodes = [root]
    count = 0
    for c in text:
        next_nodes = [root]
        for node in nodes:
            next_node = node.find(c)
            if next_node is not None:
                count += next_node.is_needle
                next_nodes.append(next_node)
        nodes = next_nodes
    return count


print(
    count_matches(['red', 'hello', 'how are you', 'hey', 'deployed'],
                  'hello, This is shared right? how are you doing tonight'))

7
задан fuentesjr 9 February 2009 в 22:16
поделиться

5 ответов

Google AppEngine предлагает намного больше функциональности (и сложность), чем Вам будет нужно, если действительно все, что Вы захотите сделать, будет, переиздают некоторые структурированные данные как RSS. Лично, я использовал бы что-то как каналы Yahoo для задачи как это.

Это сказанное..., если Вы хотите/нуждаетесь намочить ноги с GAE, пойдите для него!

2
ответ дан 7 December 2019 в 12:25
поделиться

Работа с Google App Engine является довольно прямой. Я рекомендовал бы пройти Руководство по началу работы. Это коротко и просто и затрагивает существенные темы GAE. Существует больше за и против, чем я перечислю здесь.

Профессионалы:
В целом Механизм Приложения разработан для веб-приложений интенсивного трафика, которые должны масштабироваться. Кроме того, это разработано с точки зрения программиста. С большой частью проблем масштабируемости (оптимизация базы данных, администрирование сервера, и т.д.) имеет дело Google. Однако я нахожу, что это хорошая платформа. Это все еще активно разрабатывается инженерами Google, и планирующей задач (функция, которую долго требовали), находится в текущем плане действий.

Недостатки:
Возможно, самая большая оборотная сторона прямо сейчас является снова отсутствием официальной поддержки планирования и пределов квоты, в настоящее время устанавливаемых для бесплатных учетных записей. Однако Вы не можете жаловаться очень если его свободное. В настоящее время это только поддерживает Python как интерфейс программирования (хотя новый язык [Java, который я предсказываю], прибывает скоро). Кроме того, Python 2.6 (и 3.0 в этом отношении) еще не поддерживается. Кроме того, Django 1.0 официально не поддерживается в Механизме Приложения (хотя можно упаковать Django 1.0 с приложением).

2
ответ дан 7 December 2019 в 12:25
поделиться

Тяжелее, чем он был бы в большинстве других технологий.

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

1
ответ дан 7 December 2019 в 12:25
поделиться

Я думаю, что BeautifulSoup мог работать на GAE, таким образом, все Ваши потребности очистки обрабатываются :D Кроме того, GAE имеет geturl штуку. Единственная проблема я думаю, что Вы могли бы иметь, не имеет достаточного количества времени для получения данных (30 secs ограничений).

Я работаю над тем же проектом, и я решил, что легче подготовить данные по другому серверу и продвинуть их к GAE.

0
ответ дан 7 December 2019 в 12:25
поделиться

Вы также можете изучить Yahoo! Язык запросов (YQL)

0
ответ дан 7 December 2019 в 12:25
поделиться
Другие вопросы по тегам:

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