首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spynner crash python

Spynner crash python
EN

Stack Overflow用户
提问于 2012-05-31 20:34:09
回答 1查看 519关注 0票数 0

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

我在“crawler.py”模块中有这个函数:

代码语言:javascript
复制
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")中,我以这种方式调用函数:

代码语言:javascript
复制
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在此line:br.load(url)中崩溃。有人能帮我吗?非常感谢

我有: Django 1.3 Python 2.7 Spynner 1.1.0 PyQt4 4.9.1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-31 21:16:16

为什么每次调用crawling_js()时都需要实例化br = spynner.Browser()并关闭它。在一个循环中,这将使用大量的资源,我认为这就是它崩溃的原因。让我们这样想,br是一个浏览器实例。因此,您可以让它浏览任意数量的网站,而无需关闭并重新打开它。这样调整你的代码:

代码语言:javascript
复制
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,您只需执行以下操作:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10833717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档