Получить второй тег внутри find_all - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь получить второй тег внутри определенного тд, но я не могу получить только текст второго тега, так как я получаю данные от всех а. Позже я сделаю для получения данных 10 тд. Как вы можете видеть на изображении, я хочу получить данные второго a внутри каждого из 10 td:

image

мой код:

from requests import get
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0'}

url = 'https://www.oddsportal.com/soccer/spain/laliga'
response = get(url, headers=headers)

html_soup = BeautifulSoup(response.text, 'html.parser')
type(html_soup)



match_containers = html_soup.find_all("td",{ "class" : "name table-participant"})

print(len(match_containers))

first_match = match_containers[0]

first_title = first_match.text
print (first_title)

1 Ответ

0 голосов
/ 18 мая 2019

Вам нужно выбрать для второго a тега

import requests
from bs4 import BeautifulSoup as bs

url = 'https://www.oddsportal.com/soccer/spain/laliga'
r = requests.get(url, headers = {'User-Agent' : 'Mozilla/5.0'})
soup = bs(r.content, 'lxml')
print([item.text for item in soup.select('#tournamentTable tr[xeid] [href*=soccer]')])

Хотя вы можете удалить идентификатор таблицы и использовать:

print([item.text for item in soup.select('tr[xeid] [href*=soccer]')])

Для строк таблицы с полезными данными совпадений в качестве списка я бы использовал:

rows = soup.select('#tournamentTable tr[xeid]')
...