Страница загружается динамически, а набор данных разбивается на страницы, что будет означать использование браузера для извлечения, что является медленным.Существует API, который вы можете использовать.У него есть аргументы, которые позволят вам возвращать результаты в пакетах.
Прочитайте документацию API здесь .Это будет гораздо более эффективный и надежный способ получения данных.
Используйте limit
для определения # записей, извлекаемых за раз;используйте параметр offset
для запуска следующего пакета для новых записей.Пример вызова здесь.
Поскольку это запрос, вы можете настроить другие параметры так же, как запрос SQL, чтобы получить желаемый набор результатов.Это также означает, что вы, вероятно, можете написать очень быстрый начальный запрос, чтобы вернуть количество записей из базы данных, которое вы можете использовать для определения конечной точки для пакетных запросов.
Вы можете написать сценарий на основе классов, который использует многопроцессорность изахватывайте эти пакеты более эффективно.
import requests
import pandas as pd
from pandas.io.json import json_normalize
response = requests.get('https://data.lacity.org/api/id/y8tr-7khq.json?$select=`dr_no`,`date_rptd`,`date_occ`,`time_occ`,`area_id`,`area_name`,`rpt_dist_no`,`crm_cd`,`crm_cd_desc`,`mocodes`,`vict_age`,`vict_sex`,`vict_descent`,`premis_cd`,`premis_desc`,`weapon_used_cd`,`weapon_desc`,`status`,`status_desc`,`crm_cd_1`,`crm_cd_2`,`crm_cd_3`,`crm_cd_4`,`location`,`cross_street`,`location_1`&$order=`date_occ`+DESC&$limit=100&$offset=0')
data = response.json()
data = json_normalize(data)
df = pd.DataFrame(data)
print(df)
Пример записи в ответе JSON: