无法在 python 中的 div ContentPlaceHolder1_contractCodeDiv 中获取数据

Cannot grab data inside a div ContentPlaceHolder1_contractCodeDiv in python

美好的一天。我正在尝试从 url 中获取一些数据。具体来说,我想获取 div id="ContentPlaceHolder1_contractCodeDiv" 中的内容并生成以下输出。但是,我只是收到一个错误。提前致谢。

import requests
from bs4 import BeautifulSoup

header = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0"}
url = "https://bscscan.com/address/0x264ca80271e944c80ee81a3c8ed71acaa7d15b15#code"
url = requests.get(url, headers=header, timeout=5)
ca = BeautifulSoup(url.content, 'html.parser')

constatus = ca.find('h3', class_='h6 text-dark font-weight-bold mb-4').get_text().strip()
print (constatus)

conFlag = ca.find('div', class_='alert alert-warning text-dark mb-2').get_text()
print ("conFlag: ", conFlag)

contractCode = ca.find('div', class_='ContentPlaceHolder1_contractCodeDiv').get_text()
print (contractCode)

想要的输出:

Warning:  This contract contains unverified libraries: IterableMapping
Status: Contract Source Code Verified (Exact Match)
Contract Name: ElonVSPutin
Compiler Version:  v0.6.12+commit.27d51765
Optimization Enabled:  No with 200 runs
Other Settings: default evmVersion, MIT license

Compiler specific version warnings:       #-- text from the exclaimation icon
The compiled contract might be susceptible to SignedImmutables (very low-severity),
ABIDecodeTwoDimensionalArrayMemory (very low-severity), EmptyByteArrayCopy (medium-severity),
DynamicArrayCleanup (medium-severity) Solidity Compiler Bugs.

当前输出:

Contract Source Code Verified (Exact Match)
Warning:  ×This contract contains unverified libraries: IterableMapping
Traceback (most recent call last):

就是喜欢打印文字?看看这个例子——如果你想单独获取信息,你可以通过 css selector 来访问它们,检查字符串,获取父级并提取文本:

contract = soup.select_one('div:-soup-contains-own("Contract Name:")').parent.get_text(' ', strip=True)
compilerVersion = soup.select_one('div:-soup-contains-own("Compiler Version")').parent.get_text(' ', strip=True)

例子

import requests
from bs4 import BeautifulSoup

header = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0"}
url = "https://bscscan.com/address/0x264ca80271e944c80ee81a3c8ed71acaa7d15b15#code"
url = requests.get(url, headers=header, timeout=5)
soup = BeautifulSoup(url.content, 'html.parser')

info = '\n'.join([e.replace('\n\n',' ').strip('\n ×') for e in soup.select_one('#ContentPlaceHolder1_contractCodeDiv').text.split('\n\n\n\n') if e != ''])
warning = soup.select_one('#ContentPlaceHolder1_divWarningMsg').text.strip().replace(':','\n')

print(f'{info}\n{warning}')

输出

This contract contains unverified libraries: IterableMapping
Contract Source Code Verified (Exact Match)
Contract Name: ElonVSPutin
Compiler Version v0.6.12+commit.27d51765
Optimization Enabled: No with 200 runs
Other Settings: default evmVersion, MIT license

Compiler specific version warnings
The compiled contract might be susceptible to SignedImmutables (very low-severity), ABIDecodeTwoDimensionalArrayMemory (very low-severity), EmptyByteArrayCopy (medium-severity), DynamicArrayCleanup (medium-severity) Solidity Compiler Bugs.