当前位置: 首页 > 知识库问答 >
问题:

获取未定义USER_AGENT的错误(Python 3)

爱刚捷
2023-03-14

我正试图从“iframe”标签中获取信息。当我执行这段代码时,它说没有定义“USER\u AGENT”。我怎样才能解决这个问题?

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, timeout=5)
soup = BeautifulSoup(page.content, "html.parser")
test = soup.find_all('iframe')

共有2个答案

於乐语
2023-03-14

我们必须提供一个用户代理,这里有一个到假冒用户代理的链接。

import requests
from bs4 import BeautifulSoup


USER_AGENT = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/53'}
url = "https://etherscan.io/token/0x168296bb09e24a88805cb9c33356536b980d3fc5#balances"
token = "/token/generic-tokenholders2?a=0x168296bb09e24a88805cb9c33356536b980d3fc5&s=100000000000000000"


page = requests.get(url + token, headers=USER_AGENT, timeout=5)
soup = BeautifulSoup(page.content, "html.parser")
test = soup.find_all('iframe')

您可以简单地不使用用户代理,代码

import requests
from bs4 import BeautifulSoup


url = "https://etherscan.io/token/0x168296bb09e24a88805cb9c33356536b980d3fc5#balances"
token = "/token/generic-tokenholders2?a=0x168296bb09e24a88805cb9c33356536b980d3fc5&s=100000000000000000"


page = requests.get(url + token, timeout=5)
soup = BeautifulSoup(page.content, "html.parser")
test = soup.find_all('iframe')

为了便于阅读,我将您的URL分为URL和令牌。这就是为什么有两个变量URL和token

凌和颂
2023-03-14

错误是清楚地告诉你什么是错的。您正在作为HeaderUSER\u AGENT传入,这是您之前在代码中未定义的。看看这篇关于如何在方法中使用头的文章。

文档说明您必须为请求传入HTTP头字典,而您传入了未定义的变量USER\u AGENT

从请求库API:

标题=无

不区分大小写的响应头字典。

例如,headers['content-encoding']将返回'content-encoding'响应头的值。

编辑:

有关Content-Type标头的更好解释,请参阅这篇SO文章。另请参阅这篇WebMasters文章,其中解释了接受和内容类型HTTP标头之间的区别。

由于您似乎只对刮取iframe标记感兴趣,您可以简单地完全省略头参数,如果您在代码中打印出test对象,您应该会看到结果。

import requests
from bs4 import BeautifulSoup

page = requests.get("https://etherscan.io/token/0x168296bb09e24a88805cb9c33356536b980d3fc5#balances" + "/token/generic-tokenholders2?a=0x168296bb09e24a88805cb9c33356536b980d3fc5&s=100000000000000000", timeout=10)
soup = BeautifulSoup(page.content, "lxml")
test = soup.find_all('iframe')

for tag in test:
    print(tag)
 类似资料:
  • 问题内容: 在开发机器上,我的网站运行正常,但是在托管服务器上我遇到了javascript’Sys ‘未定义 错误,并且我的AJAX无法正常工作。 我在上面做了一个示例页面和脚本管理器,请仔细研究。 http://nexapps.com/default2.aspx 按钮和文本框位于AJAX updatepanel中,但是当单击按钮页面时,将回发完整。 注意:托管服务器-IIS7,但我的其他网站在同

  • 问题内容: 我正在将React代码转换为打字稿,tsconfig中的目标是es5。 在IE 11中运行时,出现错误“未定义承诺” 我知道我需要填充,但是如何? 我没有使用Babel。 以下是我的Webpack.config 问题答案: 在axios上面写这个对我有用,也许其他选择也可以 我主要面对的是IE中的缓存问题 安装webpack插件也可以 并包括 在webpack插件中 我将使用更多可能的

  • 问题内容: 我是Reactjs的新手。我正在尝试做一个非常简单的事情:当用户在文本区域内更改文本时,在render函数中更新div。有什么建议? 问题答案: 您应该绑定该函数。您收到此错误的原因是,在handleChange函数中,键盘操作未引用React类的上下文,因此您需要绑定该函数。 看到这个答案

  • 我搜索了这个网站,发现了类似的问题,但没有解决我的问题。当我滚动到一个div时,我试图使它固定在屏幕顶部。但我一直在犯错误: "(index): 59未捕获类型错误:无法读取未定义的属性'top'at(index): 59" 我还在学习jQuery,不能解决这个问题。

  • 我正在尝试探索在测试中添加咆哮通知的功能。这允许在测试执行时将消息添加到屏幕上。 我正在尝试通过以下步骤指定的这种方法:http://elementalselenium.com/tips/53-growl 机器:windows 10 Selenium版本:2.53浏览器:Firefox 49 以下是我正在使用的脚本: 执行此操作时,我收到以下错误: 等待弹出窗口出现..单击弹出窗口..现在等待通知

  • 这是我的HTML代码,我试图将div中输出的内容转换成可下载的pdf文件。 我在控制台上得到这个错误: “未捕获引用错误:未定义jsPDF” 我不确定我做错了什么,我甚至在脚本标签中添加了。。。