Как правильно поправить поиск тега в Butifulsoup и python3?

Как правильно поправить поиск тега в 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>


Под спойлером весь код скрипта
spoiler
import 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

5cde687eb71f6805215246.png
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
Первый можно так (основываясь на вашем коде, чтобы было понятнее)

found_tags = BeautifulSoup(v, parser).find_all("td", {"class": "center"})
first_tag = found_tags[0]
text = first_tag.text
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы