#python #beautifulsoup
Вопрос:
В этой тестовой модели я могу собрать href
значение для первого ('tr', class_='rowLive')
, я пытался создать цикл для сбора всех остальных href
, но он всегда дает IndentationError: expected an indented block
или говорит, что я пытаюсь использовать find
вместо find_all
этого .
Как мне следует поступить, чтобы собрать все href
?
import requests
from bs4 import BeautifulSoup
url = 'http://sports.williamhill.com/bet/pt/betlive/9'
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}
site = requests.get(url, headers=headers)
soup = BeautifulSoup(site.content, 'html.parser')
jogos = soup.find_all('tr', class_='rowLive')
jogo = jogos[0]
linksgame = jogo.find('a', href=True).attrs['href'].strip()
print(linksgame)
Ответ №1:
jogos
возвращает список, вы можете перебирать его и find()
a
для каждой итерации:
import requests
from bs4 import BeautifulSoup
url = "http://sports.williamhill.com/bet/pt/betlive/9"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
site = requests.get(url, headers=headers)
soup = BeautifulSoup(site.content, "html.parser")
jogos = soup.find_all("tr", class_="rowLive")
for tag in jogos:
print(tag.find("a", href=True)["href"])
Или:
print([tag.find("a", href=True)["href"] for tag in jogos])
Комментарии:
1. Мой друг, большое тебе спасибо, я просто жду, когда Стек разрешит мне одобрить твой ответ в качестве решения, и я отдам тебе должное!