我有以下bs4元素标签:
<span><span>some content</span> B</span>
字符串B的len未知(为简化起见,我将其命名为B)
如何使用beautifulSoup提取“ b”?或者我只是作为一种解决方案来提取文本,然后使用一些正则表达式技术
谢谢
编辑:完整代码
def get_doc_yakarouler(license_plate,url = 'https://www.yakarouler.com/car_search/immat?immat='):
response = requests.get(url+license_plate)
content = response.content
doc = BeautifulSoup(content,'html.parser')
result = doc.span.text
if 'identifié' in result :
return doc
else :
return f"La plaque {license_plate} n'est pas recensé sur yakarouler"
doc = get_doc_yakarouler('AA300AA')
span = doc.find_all('span')
motorisation_tag = span[1]
我要提取“ 1.6 TDI”
我找到了使用以下方法的解决方案:motorisation_tag.text.replace(u'\ xa0','').split('')[1],但我想直接使用bs4是否可能
答案 0 :(得分:2)
假设您有一个变量span
表示外部<span>
标签,则可以执行以下操作来提取“ B”:span.contents[1]
。之所以有效,是因为.contents
将返回标签内容的列表,在本例中为[<span>some content</span>, ' B']
。然后,您可以访问“ B”文本作为数组的第二个元素。请注意,如果B之前有一个空格(如您的HTML示例所示),则该空格将包含在字符串中
答案 1 :(得分:1)
from bs4 import BeautifulSoup as bs , NavigableString
html = '<span><span>some content</span> B</span>'
soup = bs(html, 'html.parser')
span = soup.find("span")
# First approach Using Regular Expressions
outer_text_1 = span.find(text=True, recursive=False)
# Second approach is looping through the contents of the tag and check if it's the outer text and not a tag
outer_text_2 = ' '.join([t for t in span.contents if type(t)== NavigableString])
print(outer_text_1) # output B
print(outer_text_2) # output B