繁体   English   中英

Spynner崩溃Python

[英]Spynner crash python

我正在构建Django应用,并且正在使用Spynner进行网络爬网。 我有这个问题,希望有人能帮助我。

我在模块“ 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崩溃时,一切都是正确的。 Python在此行崩溃:br.load(url)。 有人能帮助我吗? 非常感谢

我有:Django 1.3 Python 2.7 Spynner 1.1.0 PyQt4 4.9.1

为什么需要实例化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 

然后,如果您坚持以后要关闭br,则只需执行以下操作:

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM