各位大佬们,我最近在学习Python爬虫,遇到个奇怪的问题。我在处理大量数据时,程序运行一段时间后会突然卡死,排查发现可能是内存泄漏。代码里用到requests和BeautifulSoup,但怎么检查也找不出问题所在。有没有熟悉这方面的老司机能指点迷津?附上部分关键代码:
def fetch_data(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
data = soup.find_all('div', class_='data-element')
return data
# 无限循环爬取
while True:
data_list = fetch_data('http://xxx.com')
process_data(data_list)
如果是我理解错了,请纠正。感激不尽!
V站 https://www.v2ex.com/t/1058227#reply0
怎么无人!!!
先看看response和soup对象是否在循环外被释放了?记得requests返回的是一个迭代,可能需要手动关闭连接。
还有,试试用with管理请求,这样会自动关闭连接 另外BeautifulSoup的lxml性能会好点
@Guru007 谢谢