玩MC的Alex 2025-01-30 21:56 采纳率: 0%
浏览 4

lxml分析未响应怎么办

import requests  
import tkinter as tk  
import bs4  
import webbrowser  
import threading  
import time  

def getTextInput():   
    return search_bar.get("1.0", "end").strip()  

def search():  
    threading.Thread(target=search_in_thread, daemon=True).start()  

def search_in_thread():  
    result = getTextInput()  
    if not result:  
        return  
    
    text_bar.delete('1.0', tk.END)
    text_bar.insert('1.0', '正在搜索...')  
    
    head = {  
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"  
    }  
    url = f"https://baike.baidu.com/item/{result}"  
    
    try:  
        res = requests.get(url, headers=head, timeout=5)
        res.raise_for_status()  
    except requests.RequestException as e:  
        text_bar.delete('1.0', tk.END)
        text_bar.insert('1.0', f"请求失败: {e}")  
        return  
    
    res.encoding = res.apparent_encoding  
    soup = bs4.BeautifulSoup(res.text, "lxml")  
    
    lab = soup.find_all('span', class_='text_ki2nn')  
    string = "".join(i.get_text() for i in lab)  

    # 在 Tkinter 线程中更新 UI  
    text_bar.after(0, lambda: update_text_bar(string))  

def update_text_bar(text):   
    text_bar.delete('1.0', tk.END)
    text_bar.insert('1.0', text if text else '未找到相关信息')  

def about():  
    webbrowser.open("about.py")

main = tk.Tk()  
main.title('智能搜索器')  
main.geometry("1000x500+10+10")  

search_bar = tk.Text(main, width=50, height=1, font=("微软雅黑", 16))  
search_botton = tk.Button(main, width=8, height=2)  
about_botton = tk.Button(main, width=8, height=1)  
text_bar = tk.Text(main, width=84, height=10, font=("微软雅黑", 10))  # 文本框  

search_botton["text"] = "搜索"  
about_botton["text"] = "关于"  

# 绝对布局  
search_bar.place(x=10, y=23)  
search_botton.place(x=620, y=15)  
about_botton.place(x=930, y=5)  
text_bar.place(x=10, y=70)  

search_botton.config(command=search)  
about_botton.config(command=about)  
main.mainloop()

这段代码想要实现一个在百度百科爬取信息并进行类似搜索的效果
但是遇到了未响应的问题
一般进行一次“搜索”后,就能在任务管理器看到CPU资源占用率暴涨,程序也开始未响应,所以无法进行下一次“搜索”
简单分析后发现应该是解析和查找方面的问题,但是始终不知道怎么办,问了GPT 4o 但是他要不让他丧失了原来的功能,要不没有达到解决问题的效果

img


环境:Python 3.12.2 ,编辑器:Subline Text build 4192

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2025-01-30 21:56
    关注

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    在PYTHON中,使用BEAUTIFULSOUP解析HTML文档时,可能会遇到“未响应”错误。这通常意味着网页内容被服务器挂载或服务器宕机了。

    解决方法:

    1. 检查服务器状态:确保你的网络连接稳定,并且服务器没有异常。
    2. 确认浏览器设置:确保你正在使用的浏览器是最新版本,如果需要更新,可以尝试重新安装浏览器。
    3. 使用代理:如果你的WEB服务运行在本地服务器上,可以考虑使用代理IP来绕过防火墙。
    4. 更新缓存:有时候,某些网站可能因为访问量过大而无法提供所有可用的服务。你可以尝试刷新页面或者关闭不必要的页面。

    以下是一个简单的示例,它创建了一个新窗口并显示一个网页的源码:

    FROM BS4 IMPORT BEAUTIFULSOUP
    
    URL = "HTTPS://WWW.EXAMPLE.COM"
    RESPONSE = REQUESTS.GET(URL)
    SOUP = BEAUTIFULSOUP(RESPONSE.TEXT, 'HTML.PARSER')
    
    # 打开一个新的窗口
    WINDOW = TK.TK()
    WINDOW.TITLE("EXAMPLE WEBSITE")
    WINDOW.GEOMETRY("500X300")
    
    # 将网页源代码保存到文件中
    WITH OPEN('EXAMPLE.HTML', 'W') AS FILE:
        FILE.WRITE(SOUP.PRETTIFY())
    
    # 添加事件监听器以触发新的窗口打开
    WINDOW.MAINLOOP()
    

    请注意,这些方法只能帮助你理解问题所在,但不能解决问题本身。如果你的问题仍然存在,你需要提供更多的详细信息,例如网页的具体URL、请求头、请求参数等,以便我们更好地诊断和解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月30日