2012-05-31 5 views
0

Я создаю приложение Django, и я использую Spynner для веб-сканирования. У меня есть эта проблема, и я надеюсь, что кто-то может мне помочь.Spynner crash python

У меня есть эта функция в модуле "crawler.py":

import spynner 

def crawling_js(url) 
    br = spynner.Browser() 
    br.load(url) 
    text_page = br.html 
    br.close (*) 
    return text_page 

(*) Я попытался с br.close() слишком
в другом модуле (например: "import.py") Я вызвать функцию таким образом:

from crawler import crawling_js  

l_url = ["https://www.google.com/", "https://www.tripadvisor.com/", ...] 

for url in l_url: 
    mytextpage = crawling_js(url) 
    .. parse mytextpage.... 

, когда я прохожу первый URL в функцию все правильно, когда я прохожу вторую аварию «URL» питон. Ошибка Python в этой строке: br.load (url). Кто-то может мне помочь? Большое спасибо

у меня есть: Django 1.3 Python 2.7 Spynner 1.1.0 PyQt4 4.9.1

ответ

0

Почему вам нужно создать экземпляр BR = spynner.Browser() и закройте его каждый раз, когда вы называете crawling_js(). В цикле это будет использовать много ресурсов, которые, по моему мнению, являются причиной его сбоя. давайте подумаем об этом так: br - это экземпляр браузера. Таким образом, вы можете заставить его просматривать любое количество веб-сайтов без необходимости его закрывать и снова открывать. Настройте ваш код таким образом:

import spynner 

br = spynner.Browser() #you open it only once. 

def crawling_js(url): 
    br.load(url) 
    text_page = br._get_html() #_get_html() to make sure you get the updated html 
    return text_page 

тогда, если вы настаиваете, чтобы закрыть бр позже вы просто сделать:

from crawler import crawling_js , br 

l_url = ["https://www.google.com/", "https://www.tripadvisor.com/", ...] 

for url in l_url: 
    mytextpage = crawling_js(url) 
    .. parse mytextpage.... 

br.close() 
+0

Отлично! Теперь он работает, спасибо большое – RoverDar

+0

Приятно слышать это. Затем, пожалуйста, рассмотрите [принятие] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) этого ответа. – YusuMishi