скрести данные с URL в панд - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь очистить дату от URL.Данные не находятся в таблицах HTML, поэтому pandas.read_html () не собирает их.

URL-адрес: https://www.athlinks.com/event/1015/results/Event/638761/Course/988506/Results

Данные, которые я хотел бы получить, представляют собой таблицупол, возраст, время прошедших 5к гонок (название не особо важно).Данные представлены на веб-странице 50 одновременно, приблизительно на 25 страницах.

Он использует различные структуры JavaScript для пользовательского интерфейса (node.js, реагировать).Обнаружил это с помощью надстройки «Что запускает» в браузере Chrome.

Вот реальная причина, по которой я хотел бы получить эти данные.Я новый бегун и буду участвовать в этих 5 тысячах на следующей неделе и хотел бы изучить некоторые статистические данные о распределении прошлых лиц (это ежегодная гонка, и данные восходят к 1980-м годам).

Спасибо взаранее!

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Данные поступают из socket.io, и для этого есть пакеты python.Как я его нашел?

  1. Если вы откроете панель Сеть в своем браузере и выберете XHR-фильтр, вы найдете что-то вроде https://results -hub.athlinks.com/socket.io/?EIO=3&transport=polling&t=MYOPtCN&sid=5C1HrIXd0GRFLf0KAZZi

  2. Посмотрите на содержание, это то, что нам нужно.

  3. К счастью, у этого сайта есть исходные карты.Теперь вы можете перейти к Дополнительные инструменты -> Поиск и найти этот домен.

  4. И затем найти resultsHubUrl в настройках.

  5. Это свойство используется внутри setUpSocket.
  6. И setUpSocket используется внутри IndividualResultsStream.js и RaseStreams.js.

Теперь вы можете нажать CMD + P и углубиться в эти файлы.

Итак ... Я потратил около пяти минут, чтобы найти его.Вы можете идти вперед!Теперь у вас есть все необходимые инструменты.Не стесняйтесь использовать точки останова и читайте больше об инструментах разработчика Chrome.

0 голосов
/ 29 января 2019

Вам действительно нужно визуализировать JS в движке браузера перед сканированием сгенерированного HTML.Вы пробовали https://github.com/scrapinghub/splash, https://github.com/miyakogi/pyppeteer, или https://www.npmjs.com/package/spa-crawler?Вы также можете попытаться проверить страницу (F12 -> Сеть) во время загрузки соответствующих вам данных (я полагаю, из restful api), а затем сделать те же вызовы из командной строки, используя curl или requestsбиблиотека питона.

...