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 另一个问题,如果你 运行 遇到问题。