Как собрать все указанные href?

#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. Мой друг, большое тебе спасибо, я просто жду, когда Стек разрешит мне одобрить твой ответ в качестве решения, и я отдам тебе должное!