gpt4 book ai didi

python - Beautifulsoup - 在 soup.find() 中传递变量

转载 作者:行者123 更新时间:2023-12-01 08:35:00 28 4
gpt4 key购买 nike

result = soup.find('span', {'id': 'dlROA_ctl35_lblROALINE'}).get_text()

我想通过使用变量使其动态化来执行与上面相同的操作。我正在使用以下代码,但它不起作用:

i = 135
idstring = 'dlROA_ct'+str(i)+'_lblROALINE'
dict1 = {'id': idstring}
result = soup.find('span', dict1).get_text()

我收到错误:“AttributeError:'NoneType'对象没有属性'get_text'”

最佳答案

看起来好像您正在尝试设置使用迭代器来查找包含该字符串的所有出现的范围。如果您愿意,您可以这样做,但更好的解决方案是传入如下正则表达式:

import re

results = soup.find_all('span', {'id': re.compile('dlROA_ctl\d+_lblROALINE')})
for result in results:
print(result.get_text())

有关正则表达式的快速引用,我推荐 https://regex101.com

回答您实际提出的问题:

您收到属性错误的原因不是因为代码未正确接受您的变量,而是因为您要转向 soup 的源代码不包含您指定的标签。

为了避免出现属性错误,您可以执行以下操作:

i = 35
idstring = 'dlROA_ctl'+str(i)+'_lblROALINE'
dict1 = {'id': idstring}
result = soup.find('span', dict1)
if result:
print(result.get_text())
else:
print('no result found')

如果您仍然找不到结果,您可能需要考虑汤不是您想象的那样,并且可能需要查看soup.prettify()

关于python - Beautifulsoup - 在 soup.find() 中传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769439/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com