Beautifulsoup对所有表标签返回空

时间:2019-07-21 13:59:14

标签: python html selenium web-scraping beautifulsoup

我正在尝试访问表详细信息,以最终放入dataframe并另存为来自以下站点的行数有限(数据集很大)的csv:{{ 3}}

我刚刚开始进行网络抓取,并且正在对此数据集进行练习。我可以有效地拉出div之类的标签,但是当我尝试soup.findAll('tr')td时,它将返回一个空集。

表似乎被嵌入到不同的代码中(请参见上面的链接),所以这可能是我的问题,但是仍然不确定如何访问详细信息行和标题等,Selenium可能是?

谢谢!

1 个答案:

答案 0 :(得分:2)

从外观上看,该网站已允许您导出数据:

Download

看上去,原始链接是:

https://data.cityofchicago.org/Public-Safety/Crimes-2001-to-present/ijzp-q8t2/data

.csv下载链接是:

https://data.cityofchicago.org/api/views/ijzp-q8t2/rows.csv?accessType=DOWNLOAD

.json链接是:

https://data.cityofchicago.org/resource/ijzp-q8t2.json

因此,您只需提取数据ID(在这种情况下为ijzp-q8t2),然后将其替换在上面的下载链接中即可。 Here是其API的官方文档。

import pandas as pd
from sodapy import Socrata

# Unauthenticated client only works with public data sets. Note 'None'
# in place of application token, and no username or password:
client = Socrata("data.cityofchicago.org", None)

# Example authenticated client (needed for non-public datasets):
# client = Socrata(data.cityofchicago.org,
#                  MyAppToken,
#                  userame="user@example.com",
#                  password="AFakePassword")

# First 2000 results, returned as JSON from API / converted to Python list of
# dictionaries by sodapy.
results = client.get("ijzp-q8t2", limit=2000)

# Convert to pandas DataFrame
results_df = pd.DataFrame.from_records(results)