BeautifulSoup returns None 使用具有特定属性的查找方法时
BeautifulSoup returns None when using find method with specific attribute
我想从 <span>
标签内有 <a>
标签的网页中使用 BeautifulSoup 提取信息:
<span> at txn <a href="/tx/0xc3400990117385ca81de274fc5cca8d7965e92729cfb294035dd7d2e740bf1c5" data-toggle="tooltip" title="" class="hash-tag text-truncate" data-original-title="Creator Txn Hash">0xc3400990117385ca81de274fc5cca8d7965e92729cfb294035dd7d2e740bf1c5</a></span>
我想提取值 0xc340xc3400990117385ca81de274fc5cca8d7965e92729cfb294035dd7d2e740bf1c5,它位于锚标记内的 data-original-title="Creator Txn Hash" 之后。
我正在使用指定属性的查找方法。我的代码是:
soup = BeautifulSoup(page)
adr = soup.find('a', attrs={'data-original-title': 'Creator Txn Hash'})
print(adr.get('value'))
此代码返回:AttributeError:'NoneType' 对象没有属性 'get'。如果我尝试只打印像 print(adr)
这样的 ADR,它 returns None
我也试过 span 和 returns None.
adr = soup.find('span', attrs={'data-original-title': 'Creator Txn Hash'})
我在这里做错了什么?任何帮助将不胜感激。
问题更新:
我正在粘贴我的完整代码。问题可能出现在 python 加载整个页面时,而不是如果您在页面的 html 部分进行搜索。
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
site= "https://etherscan.io/address/0x92f754bd63719422cce0d82c3bebfdbfba9d6e69"
hdr = {'User-Agent': 'Mozilla/5.0'}
req = Request(site,headers=hdr)
page = urlopen(req)
soup = BeautifulSoup(page, 'html.parser')
adr = soup.find('a', attrs={'data-original-title': 'Creator Txn Hash'})
print(adr.text)
此外,还有其他方法(在程序执行方面可能更快)从页面获取该地址吗?
而不是 adr.get('value')
,使用 adr.text
:
>>> adr = soup.find('a', attrs={'data-original-title': 'Creator Txn Hash'})
>>> print(adr.text)
0xc3400990117385ca81de274fc5cca8d7965e92729cfb294035dd7d2e740bf1c5
Wrt
If i try to print just the adr like print(adr)
it returns None
这对我来说很好。
在更新的代码中,页面上的一些内容是通过 Javascript 动态加载的。所以它最初不存在于页面源中。使用 selenium 在浏览器中加载页面,然后查找交易详细信息。研究它并尝试一下。 Post 另一个问题,如果你 运行 遇到问题。
我想从 <span>
标签内有 <a>
标签的网页中使用 BeautifulSoup 提取信息:
<span> at txn <a href="/tx/0xc3400990117385ca81de274fc5cca8d7965e92729cfb294035dd7d2e740bf1c5" data-toggle="tooltip" title="" class="hash-tag text-truncate" data-original-title="Creator Txn Hash">0xc3400990117385ca81de274fc5cca8d7965e92729cfb294035dd7d2e740bf1c5</a></span>
我想提取值 0xc340xc3400990117385ca81de274fc5cca8d7965e92729cfb294035dd7d2e740bf1c5,它位于锚标记内的 data-original-title="Creator Txn Hash" 之后。
我正在使用指定属性的查找方法。我的代码是:
soup = BeautifulSoup(page)
adr = soup.find('a', attrs={'data-original-title': 'Creator Txn Hash'})
print(adr.get('value'))
此代码返回:AttributeError:'NoneType' 对象没有属性 'get'。如果我尝试只打印像 print(adr)
这样的 ADR,它 returns None
我也试过 span 和 returns None.
adr = soup.find('span', attrs={'data-original-title': 'Creator Txn Hash'})
我在这里做错了什么?任何帮助将不胜感激。
问题更新:
我正在粘贴我的完整代码。问题可能出现在 python 加载整个页面时,而不是如果您在页面的 html 部分进行搜索。
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
site= "https://etherscan.io/address/0x92f754bd63719422cce0d82c3bebfdbfba9d6e69"
hdr = {'User-Agent': 'Mozilla/5.0'}
req = Request(site,headers=hdr)
page = urlopen(req)
soup = BeautifulSoup(page, 'html.parser')
adr = soup.find('a', attrs={'data-original-title': 'Creator Txn Hash'})
print(adr.text)
此外,还有其他方法(在程序执行方面可能更快)从页面获取该地址吗?
而不是 adr.get('value')
,使用 adr.text
:
>>> adr = soup.find('a', attrs={'data-original-title': 'Creator Txn Hash'})
>>> print(adr.text)
0xc3400990117385ca81de274fc5cca8d7965e92729cfb294035dd7d2e740bf1c5
Wrt
If i try to print just the adr like
print(adr)
it returns None
这对我来说很好。
在更新的代码中,页面上的一些内容是通过 Javascript 动态加载的。所以它最初不存在于页面源中。使用 selenium 在浏览器中加载页面,然后查找交易详细信息。研究它并尝试一下。 Post 另一个问题,如果你 运行 遇到问题。