Как в этом случае использовать строковый аргумент для извлечения текста?
Вы не можете
Примечание:
Я предполагаю, что вы подразумеваете под некоторым изменением строкового параметра в
item = soup.find("caption",string="ASIC registration").text
Как указано в документации
Если у тега есть только один дочерний элемент, и этот дочерний элемент является NavigableString,
ребенок доступен как .string:
import re
from bs4 import BeautifulSoup
htmlelement = """
<caption>
<span class="toggle open"></span>
ASIC registration
</caption>
"""
soup = BeautifulSoup(htmlelement,"lxml")
item = soup.find("caption")
print(item.string)
выход
None
Здесь .string
равно None
, поскольку заголовок имеет более одного ребенка.
Если вы пытаетесь получить родительский элемент (в данном случае тег заголовка) с текстом, вы можете сделать
item = soup.find(string=re.compile('ASIC registration')).parent
что даст
<caption><a></a>ASIC registration</caption>
Конечно, вызов .text
для этого родительского тега даст полный текст внутри этого тега, если это не полный текст внутри него.
item = soup.find(string=re.compile('ASIC')).parent.text
выдаст вывод
ASIC registration