Arhn - архитектура программирования

Очистка веб-страницы json

Я очень новичок в веб-скрейпинге, и у меня возникли проблемы с очисткой некоторых данных игроков НБА с nba.com. Сначала я попытался очистить страницу с помощью bs4, но столкнулся с проблемой, которая после некоторых исследований, как я полагаю, связана с «XHR» из статей, которые я читал. Мне удалось найти веб-адрес для данных в формате json, но моя программа на python, похоже, зависает и никогда не загружает данные. Опять же, я очень новичок в веб-скрейпинге, но подумал, что посмотрю, не ошибся ли я здесь... Есть предложения? Спасибо! (Код ниже)

import requests
import json

url = "http://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&DateTo=&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&VsConference=&VsDivision=&Weight="

resp = requests.get(url=url)
data = json.loads(resp.text)
print(data)

  • почему бы не посмотреть на библиотеку, чтобы помочь? github.com/seemethere/nba_py или хотя бы посмотреть, как они это сделали? 20.10.2017
  • Такого еще не нашел.. спасибо поищу! 20.10.2017

Ответы:


1

Попробуйте. Он создаст все категории с этой страницы в соответствии с заголовком, который я определил. Кстати, вы не получили ответа в первую очередь с вашей первоначальной попыткой, потому что веб-страница ожидала User-Agent в вашем запросе, чтобы убедиться, что запрос исходит не от бота, а от любого реального браузера. Однако я подделал это и нашел ответ.

import requests

url = "http://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&DateTo=&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&VsConference=&VsDivision=&Weight="
resp = requests.get(url,headers={'User-Agent':'Mozilla/5.0'})
data = resp.json()

storage = data['resultSets']
for elem in storage:
    all_list = elem['rowSet']

    for item in all_list:
        Player_Id = item[0]
        Player_name = item[1]
        Team_Id = item[2]
        Team_abbr = item[3]
        print("Player_Id: {} Player_name: {} Team_Id: {} Team_abbr: {}".format(
            Player_Id,Player_name,Team_Id,Team_abbr))
21.10.2017
  • Я попробовал ваш метод с этим URL-адресом: enciclovida.mx/explora -por-region/especies-por-grupo?utf8=\xe2\x9c\x93&grupo_id=Plantas®ion_id=&parent_id=&pagina=&nombre= и я всегда получаю 500, даже используя заголовки, любые идеи о том, как можно я его адаптирую? 10.03.2018
  • ммм, я попытался установить region_id, и я получил результаты, но поскольку они приходят на страницах (pagina=), я получаю только первые 10, они должны быть › 500 страниц; Я видел, что в примере с баскетболом все данные находятся на одной странице. Любые подсказки? 10.03.2018

  • 2

    Просто понял, что это потому, что заголовки пользовательского агента разные... Как только они добавлены, он работает

    20.10.2017
  • вы также можете напрямую использовать r.json(), как показано здесь 21.10.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..