gpt4 book ai didi

python - 是否可以将变量传递给 (Beautifulsoup) soup.find()?

转载 作者:行者123 更新时间:2023-11-30 23:29:02 25 4
gpt4 key购买 nike

嗨,我需要将变量传递给 soup.find() 函数,但它不起作用:(有谁知道这个问题的解决方案?

from bs4 import BeautifulSoup

html = '''<div> blabla
<p class='findme'> p-tag content</p>
</div>'''

sources = {'source1': '\'p\', class_=\'findme\'',
'source2': '\'span\', class_=\'findme2\'',
'source1': '\'div\', class_=\'findme3\'',}

test = BeautifulSoup(html)

# this works
#print(test.find('p', class_='findme'))
# >>> <p class="findme"> p-tag content</p>


# this doesn't work
tag = '\'p\' class_=\'findme\''

# a source gets passed
print(test.find(sources[source]))
# >>> None

我正在尝试按照建议将其拆分:

pattern = '"p", {"class": "findme"}'
tag = pattern.split(', ')
tag1 = tag[0]
filter = tag[1]
date = test.find(tag1, filter)

我没有收到错误,只是日期没有错误。问题可能是tag1和filter的内容pycharm的调试器给了我:

tag1 = '"p"'
filter = '{"class": "findme"}'

打印它们不会显示这些撇号。是否可以删除这些撇号?

最佳答案

第一个参数是标签名称,而您的字符串不包含该标签。 BeautifulSoup(或者通常是 Python)不会解析出这样的字符串,它无法猜测您在该值中放入了一些任意的 Python 语法。

分离组件:

tag = 'p'
filter = {'class_': 'findme'}
test.find(tag, **filter)

关于python - 是否可以将变量传递给 (Beautifulsoup) soup.find()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21352168/

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