Python3爬取iframe内容时提示USER_AGENT未定义的解决方法
嘿,这个问题我太熟悉啦!你碰到的‘USER_AGENT未定义’错误,其实就是代码里用了一个没提前赋值的变量,咱们一步步来解决:
核心原因
requests.get()方法的headers参数要求传入字典类型的参数,但你直接写了USER_AGENT这个变量,却没给它定义具体内容,Python自然会报错说变量未定义。
具体解决方法
方法1:提前定义USER_AGENT变量
在import语句之后、发起请求之前,先声明一个包含浏览器标识的字典:
import requests from bs4 import BeautifulSoup # 定义USER_AGENT字典,模拟Chrome浏览器请求 USER_AGENT = { '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' } page = requests.get("https://etherscan.io/token/0x168296bb09e24a88805cb9c33356536b980d3fc5#balances" + "/token/generic-tokenholders2?a=0x168296bb09e24a88805cb9c33356536b980d3fc5&s=100000000000000000", headers=USER_AGENT, timeout=5) soup = BeautifulSoup(page.content, "html.parser") # 后续处理逻辑...
方法2:直接在headers参数中传入字典(更简洁)
如果你不想单独定义变量,也可以直接把字典写在headers参数里:
import requests from bs4 import BeautifulSoup page = requests.get( "https://etherscan.io/token/0x168296bb09e24a88805cb9c33356536b980d3fc5#balances" + "/token/generic-tokenholders2?a=0x168296bb09e24a88805cb9c33356536b980d3fc5&s=100000000000000000", 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'}, timeout=5 ) soup = BeautifulSoup(page.content, "html.parser") # 后续处理逻辑...
额外小提示
你要爬取的是iframe内的内容,记得确认你请求的URL确实是该iframe的真实src地址——有时候页面上的iframe可能用的是相对路径,或者需要从原页面的HTML中解析出来,你当前拼接的URL可以先在浏览器里打开测试下,确保能正常访问到目标内容哦~
内容的提问来源于stack exchange,提问作者j.doe
相关产品推荐
相关产品推荐

