Веб-сканер, использующий Twisted

Я пытаюсь создать веб-сканер с питоном и скрученным. Что случилось, во время вызова reactor.run()

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

def crawl(url):
    d = getPage(url)
    d.addCallback(handlePage)
    reactor.run()

а на странице дескриптора есть что-то вроде:

def handlePage(output):
    urls = getAllUrls(output)

Итак, теперь мне нужно применить crawl () к каждому URL-адресу в URL-адресах. Как мне это сделать? Должен ли я остановить реактор и начать снова? Если я упустил что-то очевидное, сообщите мне.


person Vignesh    schedule 18.04.2012    source источник


Ответы (1)


Вы не хотите останавливать реактор. Вы просто хотите загрузить больше страниц. Поэтому вам нужно реорганизовать вашу crawl функцию, чтобы не останавливать или запускать реактор.

def crawl(url):
    d = getPage(url)
    d.addCallback(handlePage)

def handlePage(output):
    urls = getAllUrls(output)
    for url in urls:
        crawl(url)

crawl(url)
reactor.run()

Однако вы можете посмотреть scrapy вместо того, чтобы создавать свой собственный с нуля.

person Jean-Paul Calderone    schedule 18.04.2012
comment
Спасибо, я не знал, что это так просто !! - person Vignesh; 19.04.2012