Автоматизация кнопки Нажмите с помощью Python - PullRequest
0 голосов
/ 02 мая 2018

Я некоторое время пытался выяснить, как сделать автоматизированный способ загрузки CSV на этой странице: https://razzball.com/mlbpitchingstats/

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

При мониторинге вкладки сети кажется, что нет запроса к API. Является ли мой единственный вариант использовать безголовый браузер? Есть ли в любом случае, чтобы захватить это с запросами? Любая помощь будет огромной!

1 Ответ

0 голосов
/ 04 мая 2018

В отличие от вашего комментария, данные не заполнены через JS. Две подсказки об этом:

  1. если вы посмотрите на источник страницы, таблица уже заполнена в вашем браузере html.
  2. если вы посмотрите на сеть своего браузера, от вашего браузера не будет XHR-запроса на получение данных.

Так что, как сказал @SuperStew, вы можете попробовать его с Beautifulsoup, хотя это может быть немного громоздко, если использовать цикл for для каждого элемента <tr/>.

Если бы мне нужно было получить эти данные в удобном для использования формате, я бы использовал панд. Пожалуйста, смотрите документацию для метода read_html . Это дает дополнительный бонус, который должен помочь преобразовать данные в нужные вам типы, то есть целые числа. Но, как утверждает документ, вам следует ожидать небольшого спора данных.


редактировать

похоже, что mlbstats блокирует фильтрацию через пользовательский агент, поэтому вам нужно будет использовать запросы с поддельным пользовательским агентом, чтобы получить страницу html:

import pandas as pd
import requests
url = "https://razzball.com/mlbpitchingstats/"
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
response = requests.get(url, headers=headers)
data = pd.read_html(response.content)  # will need wrangling
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...