在find_all

时间:2019-05-17 22:48:24

标签: python web-scraping beautifulsoup tags findall

我正在尝试获取特定td内的第二个标签,但是我不能仅获取第二个标签的文本,因为我正在从所有a中获取数据。 稍后,我将为获取10 td的数据做一个准备。正如您在图像中看到的那样,我希望每10 td内包含第二个a的数据:

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 :(得分:0)

您需要选择第二个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]')])

尽管您可以删除表ID并使用:

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

对于表的行,将有用的匹配数据作为列表,我将使用:

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