2017-09-03 158 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