我的Beautiful Soup代码未按预期运行,请求技术排查
代码问题排查
变量名拼写错误:你定义的请求结果变量是
html_txt,但初始化BeautifulSoup时误用了html_text,这会直接触发NameError,是代码无法运行的核心原因。未校验请求有效性:没有判断请求是否成功,若网站返回403/500等错误状态,拿到的不是有效HTML,后续解析自然失效。可以在请求后添加状态校验:
if html_txt.status_code != 200: print(f"请求失败,状态码:{html_txt.status_code}") exit()可能存在反爬拦截:部分网站会拦截无标识的请求,建议添加请求头模拟浏览器访问:
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } html_txt = requests.get("http://transfer.ttc.com.ge/?page=live&setLng=ka", headers=headers)元素选择器可能失效:如果修正变量名后仍拿不到内容,大概率是页面结构已变更,
tr的class组合text-left right txt-td可能不再存在,需用浏览器开发者工具重新确认目标元素的选择器。
修正后的示例代码:
from bs4 import BeautifulSoup import requests import lxml headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } html_txt = requests.get("http://transfer.ttc.com.ge/?page=live&setLng=ka", headers=headers) if html_txt.status_code != 200: print(f"请求失败,状态码:{html_txt.status_code}") else: soup = BeautifulSoup(html_txt.text, "lxml") job = soup.find("tr", class_= "text-left right txt-td") print(job)
内容的提问来源于stack exchange,提问作者Sandro Futkaradze
相关产品推荐
相关产品推荐

