斯宾纳崩溃蟒蛇



我正在构建一个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.0PyQt4 4.9.1

为什么需要实例化 br = spynner。浏览器() 并在每次调用 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()

最新更新