Получение данных с веб-страницы с помощью Python 3 - PullRequest
0 голосов
/ 30 октября 2018

Я выполняю тот же шаблон очистки веб-страниц, который я только что узнал из post , однако я не могу удалить использованный ниже скрипт. Я получаю пустой возврат и знаю, что теги есть. Я хочу, чтобы find_all "mubox" затем извлекал значения для O / U и информацию о вратарях. Это так странно, что мне не хватает?

from bs4 import BeautifulSoup
import requests
import pandas as pd

page_link = 'https://www.thespread.com/nhl-scores-matchups'

page_response = requests.get(page_link, timeout=10)

# here, we fetch the content from the url, using the requests library
page_content = BeautifulSoup(page_response.content, "html.parser")

# Take out the <div> of name and get its value
tables = page_content.find_all("div", class_="mubox")

print (tables)

# Iterate through rows
rows = []

1 Ответ

0 голосов
/ 31 октября 2018

Этот сайт использует внутренний API перед рендерингом данных. Этот API-файл представляет собой XML-файл, вы можете получить здесь , который содержит всю информацию о совпадении. Вы можете разобрать это, используя красивый суп:

from bs4 import BeautifulSoup
import requests

page_link = 'https://www.thespread.com/matchups/NHL/matchup-list_20181030.xml'
page_response = requests.get(page_link, timeout=10)
body = BeautifulSoup(page_response.content, "lxml")

data = [
    (
        t.find("road").text, 
        t.find("roadgoalie").text, 
        t.find("home").text,
        t.find("homegoalie").text,
        float(t.find("ot").text),
        float(t.find("otmoney").text),
        float(t.find("ft").text),
        float(t.find("ftmoney").text)
    )
    for t in body.find_all('event')
]

print(data)
...