Как правильно поправить поиск тега в Butifulsoup и python3?
Вопрос заключается в том, что на сайте который я хочу спарсить есть 2 тега которые содержат нужную мне информацию.
на сайте это выглид так:
<td class="center">419.56</td>
<td class="center">
<nobr>
<span data-ts="1556824546" aria-label="May 2, 2019 19:15" class="hint--bottom-right datetime">14 days ago</span>
</nobr>
</td>
Строкой:
(tag.text for tag in BeautifulSoup(v, parser).find_all("td", {"class": "center"})),
Мне нужно вытащить значение 1го тега:
<td class="center">419.56</td>
без
<td class="center">
<nobr>
<span data-ts="1556824546" aria-label="May 2, 2019 19:15" class="hint--bottom-right datetime">14 days ago</span>
</nobr>
</td>
а вот уже строкой:
(tag.text for tag in BeautifulSoup(v, parser).find_all("span", {"class": "hint--bottom-right datetime"})))
вытащить значение
<span data-ts="1556824546" aria-label="May 2, 2019 19:15" class="hint--bottom-right datetime">14 days ago</span>
Под спойлером весь код скрипта
spoilerimport requests
from tabulate import tabulate
from itertools import chain, zip_longest
from bs4 import BeautifulSoup
raid_week = ''
lang = 'ru'
parser = 'lxml'
baseURL = 'https://www.wowprogress.com/gearscore/?lfg=1'
# Fetch page 1 of guild list from URL
def fetchpage1():
return requests.get('https://www.wowprogress.com/gearscore/?lfg=1&raids_week=&lang=ru').content
# Fetch a subsequent page of guild list from URL
def fetchnextpage(p):
return requests.get(baseURL + '&raids_week=' + str(raid_week) + '&lang=' + lang).content
def CreateSoup(v):
return zip_longest(
(tag.text for tag in BeautifulSoup(v, parser).find_all("a", {"class": "hint--bottom-right"})),
(tag.text for tag in BeautifulSoup(v, parser).find_all("a", {"class": "realm"})),
(tag.text for tag in BeautifulSoup(v, parser).find_all("td", {"class": "center"})),
(tag.text for tag in BeautifulSoup(v, parser).find_all("span", {"class": "hint--bottom-right datetime"})))
# Returns a generator of guild names by chaining the first page to subsequent pages
def getcharacters(u):
return chain(getnextpages(u))
# Get first page of guild names
def getpage1(url):
return CreateSoup(fetchpage1())
# Get subsequent pages as a generator
def getnextpages(url):
return chain.from_iterable((CreateSoup(fetchnextpage(page))) for page in range(1))
# Function call
print(tabulate([character for character in getcharacters(baseURL)], headers=['Character', 'Realm', 'CharILVL', 'DateTime']))
если выполнить представленный код, то получится что он парсить оба тега в столбец CharILVL