Как найти строку, как в BeautifulSoup

#python #screen-scraping

Вопрос:

как я могу наскрести, если я знаю только половину названия брата или сестры в bs4?

 from urllib.request import urlopen
from bs4 import BeautifulSoup as BS
from urllib import request
import pandas as pd
import os
import re
html = request.urlopen(https://en.wikipedia.org/wiki/Charles_Ehresmann)
bs = BS(html.read(), 'html.parser')
    
data = pd.DataFrame({''known for':[],)}
    try:
        name = bs.find('h1').text
    except:
        name = ''
    try:
        known = bs.find('th',string = 'Known.*').next_element.text #?
    except:
        known = ''
 

Спасибо за идеи

Ответ №1:

Вы можете использовать :содержит и next_sibling

 from bs4 import BeautifulSoup as bs
import requests

r = requests.get('https://en.wikipedia.org/wiki/Charles_Ehresmann')
soup = bs(r.text, 'lxml')
print(soup.select_one('th:contains("Known")').next_sibling.get_text('n').split('n'))
 

Не в виде списка:

 print(soup.select_one('th:contains("Known")').next_sibling.get_text('n'))