his*_*oar -1 python memory string
基本上,我正在设计一个网络搜索引擎,所以我设计了一个爬虫来获取网页.
在读入时,网页采用html格式,因此所有标签都在那里.我需要从正文和标题中提取关键字,所以我试图删除所有标记("<"和">"之间的任何内容)
下面的代码适用于小型html页面,但是当我尝试大规模使用它时(即从http://www.google.com开始),我的内存不足.
0 def remove_tags(self, s):
1 while '<' in s:
2 start = s.index('<')
3 end = s.index('>')
4 s = s[:start] + " " + s[end+1:]
5 return s.split()
Run Code Online (Sandbox Code Playgroud)
内存错误发生在第4行.如何修复代码,以便获取s的子字符串不会消耗过多的内存?
你的一般方法是错误的.首先,使用真正的XML/HTML解析器.像BeautifulSoup这样的东西,当涉及到糟糕的HTML时,这是宽容的.你的方法看着<并且>不会长久存在.
其次,你已经将整个事物读入记忆中并在那里玩它.这是内存消耗和你正在做的一些操作可能会创建副本,这也不是一件好事.相反,迭代输入流并在看到数据时对其进行处理.可以将其remove_tags视为输入的过滤器而不是文本处理功能.
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |