2017-09-03 196 views
0

本网站http://a810-bisweb.nyc.gov/bisweb/bispi00.jsp用于搜索nyc建筑应用信息。在“申请搜索”部分,有“BIS作业编号:”,所以我想要提取的信息是在输入工作号码后从新页面中提取,然后单击“开始”。我如何从R网站抓取这个网站的信息?

例如,从数据集 https://data.cityofnewyork.us/Housing-Development/DOB-Job-Application-Filings/ic3t-wcy2,我选择工作号码220286232,然后转到第一个网站,将数字放在“BIS工作号码”中,然后单击开始。现在我得到一个新的页面 。我想要的信息是“记录信息的申请人”(包括申请人的联系信息)。

我被困在这里。如何在每个工作号码下提取这些申请人信息?

我很新的网络抓取。我学会了如何使用rvest从整个页面提取信息,但我不熟悉跨不同网站的网页抓取。

谢谢。

更新:我试图使用Socrata API,但我发现申请人的联系信息没有自己的API字段。如果没有API字段的信息(但该页面上的其他信息有字段)这意味着我不能使用API​​来解决这个问题?

谢谢!

+0

rvest有一些用于处理灯光表单的函数,但如果JavaScript需要先运行,您可能需要升级到RSelenium或[splashr](https://github.com/hrbrmstr/splashr)以获取源代码。一旦你有了HTML,你可以使用rvest来解析它。 – alistaire

+0

谢谢你的回应。我试图看看这两个软件包是否可以提供帮助。 – zaodao

回答

0

在该page,右上角,点击“API”选项卡。一个新的模式对话框会弹出“通过SODA API访问这个数据集”,复制链接,在这种情况下, https://data.cityofnewyork.us/resource/rvhx-8trz.json。 这是一个以机器可读的JSON格式直接提供数据的URL。但是一次只能读取1000条记录。

所以也许加上适当的$offset参数。请参阅Socrata documentation。纽约市似乎将这个软件用于他们的开放数据平台。

也许叫他们这样在你的[R脚本:

https://data.cityofnewyork.us/resource/rvhx-8trz.json?$offset=0 
https://data.cityofnewyork.us/resource/rvhx-8trz.json?$offset=500 
https://data.cityofnewyork.us/resource/rvhx-8trz.json?$offset=1000 
https://data.cityofnewyork.us/resource/rvhx-8trz.json?$offset=... 

(未经测试更高的偏移)

使用jsonlite转换成JSON R数据帧。

+0

谢谢你,knb。我之前尝试过使用API​​,但问题出在https://data.cityofnewyork.us/resource/rvhx-8trz.json,没有申请人的联系信息(电子邮件或电话号码)。它只有许可证编号,申请人姓名和职称,需要在“申请人记录信息”下提取,如上例所示。谢谢你的建议。 – zaodao

+0

也许API提供了不同的端点,或者不同的参数化来获取联系人信息数据?我没有深入研究。 – knb

+0

我没有看到他们提供联系信息的API字段。如果他们没有在这个数据集中提供https://data.cityofnewyork.us/Housing-Development/DOB-Job-Application-Filings/ic3t-wcy2,这是否意味着我找不到相关的API字段? – zaodao