【问题标题】:Spynner crash pythonSpynner 崩溃 python
【发布时间】:2012-05-31 12:34:08
【问题描述】:

我正在构建一个 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)。有人可以帮助我吗?非常感谢

我有: 姜戈 1.3 蟒蛇 2.7 斯皮纳 1.1.0 PyQt4 4.9.1

【问题讨论】:

    标签: python django crash spynner


    【解决方案1】:

    为什么每次调用 crawling_js() 时都需要实例化 br = spynner.Browser() 并关闭它。在一个循环中,这将利用大量资源,我认为这就是它崩溃的原因。让我们这样想,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()
    

    【讨论】:

    • 很高兴听到这个消息。那么请考虑accepting这个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多