Я пытаюсь очистить 8 экземпляров x между тегами td на следующих
<th class="first"> Temperature </th>
<td> x </td> # repeated for 8 lines
Однако на странице имеется множество классов, которые <th class="first">
Единственным уникальным идентификатором является строка, которая следует первой, в данном примере Температура.
Не уверен, что добавить к следующему коду, который я использую, чтобы создать какой-то критерий для очистки <th class="first">
, где температура (и другие строки следуют)
for tag in soup.find_all("th", {"class":"first"}):
temps.append(tag.text)
Это вопрос дополнительного кода (re.compile?) Или я должен использовать что-то другое полностью?
Редактировать: интересующий HTML ниже
<tbody>
<tr>
<th class="first">Temperature</th>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
<td>x</td>
</tr>
Редактировать: текущий код
from bs4 import BeautifulSoup as bs
from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'c:\program files\firefox\geckodriver.exe')
driver.get("http://www.bom.gov.au/places/nsw/sydney/forecast/detailed/")
html = driver.page_source
soup = bs(html, "lxml")
dates = []
for tag in soup.find_all("a", {"class":"toggle"}):
dates.append(tag.text)
temps = [item.text for item in soup.select('th.first:contains(Temperature) ~ td')]
print(dates)
print(temps)