各位大佬们,我最近在学习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

317次浏览
3 条回复 最后更新在2024-07-19 09:26

怎么无人!!!

先看看response和soup对象是否在循环外被释放了?记得requests返回的是一个迭代,可能需要手动关闭连接。

还有,试试用with管理请求,这样会自动关闭连接 另外BeautifulSoup的lxml性能会好点

欢迎来到虚拟咖啡社区,这是一个专为程序员和技术爱好者设计的多元化在线社区。在这里,我们致力于打造一个充满活力和支持性的环境,让每一位成员都能在这里找到归属感和成就感
TeslaM3
TeslaM3 的推介