页面是动态加载的,数据集是分页的,这意味着使用浏览器自动检索,这是很慢的。有一个API可以使用。它有允许您成批返回结果的参数。。在
阅读API文档here。这将是一种更有效、更可靠的检索数据的方法。在
使用limit确定一次检索到的记录;使用offset参数为新记录启动下一批。示例调用此处。在
因为它是一个查询,所以实际上可以像SQL查询一样调整其他参数,以检索所需的结果集。这也意味着您可以编写一个非常快速的初始查询,从数据库中返回记录计数,您可以用它来确定批处理请求的结束点。在
您可以编写一个使用多处理的基于类的脚本,从而更有效地获取这些批处理。在import requests
import pandas as pd
from pandas.io.json import json_normalize
response = requests.get('/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响应中的示例记录: