gpt4 book ai didi

python - 改善 BeautifulSoup 性能

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:27 26 4
gpt4 key购买 nike

所以我有下面这组代码解析好吃的信息。它以下列格式从 Delicious 页面打印数据

书签 |人数

书签 |人数等等……

我曾经使用以下方法来查找此信息。

def extract (soup):
links = soup.findAll('a',rel='nofollow')
for link in links:
print >> outfile, link['href']

hits = soup.findAll('span', attrs={'class': 'delNavCount'})
for hit in hits:
print >> outfile, hit.contents


#File to export data to
outfile = open("output.txt", "w")

#Browser Agent
br = Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]


url= "http://www.delicious.com/asd"
page = br.open(url)
html = page.read()
soup = BeautifulSoup(html)
extract(soup)

但问题是有些书签没有人数,所以我决定不同地解析它,这样我就可以并发获取数据并将书签和人数并排打印出来。

编辑:使用此更新版本从 15 到 5 秒内完成,还有更多建议

def extract (soup):
bookmarkset = soup.findAll('div', 'data')
for bookmark in bookmarkset:
link = bookmark.find('a',)
vote = bookmark.find('span', 'delNavCount')
try:
print >> outfile, link['href'], " | " ,vote.contents
except:
print >> outfile, "[u'0']"
#print bookmarkset


#File to export data to
outfile = open("output.txt", "w")

#Browser Agent
br = Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]


url= "http://www.delicious.com/asd"
page = br.open(url)
html = page.read()
soup = BeautifulSoup(html)
extract(soup)

虽然这方面的性能很糟糕,解析第一页需要 17 秒,而在相当不错的机器上解析此后大约需要 15 秒。从第一位代码到第二位代码时,它的性能明显下降。我可以做些什么来提高性能吗?

最佳答案

我不明白你为什么分配给vote – 两次。第一个赋值是不必要的,而且确实非常繁重,因为它必须在每次迭代时解析整个文档。为什么?

   vote = BeautifulSoup(html)
vote = bookmark.findAll('span', attrs={'class': 'delNavCount'})

关于python - 改善 BeautifulSoup 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4481424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com