【问题标题】:How can i web scrape information from this website in R?我如何在 R 中从这个网站上抓取信息?
【发布时间】:2017-09-03 01:09:12
【问题描述】:

本网站http://a810-bisweb.nyc.gov/bisweb/bispi00.jsp 用于搜索纽约市建筑申请信息。在“Application Searches”部分下,有“BIS Job Number:”,所以我要提取的信息是在我输入一个job number后,然后点击“go”后的新页面。

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

我被困在这里了。如何提取每个职位编号下的这些申请人信息?

我对网络抓取非常陌生。我了解了如何使用 rvest 从整个页面中提取信息,但我不熟悉跨不同网站的网络抓取。

谢谢。

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

谢谢!

【问题讨论】:

  • rvest 有几个函数用于处理轻量级表单,但如果需要先运行 JavaScript,您可能需要升级到 RSelenium 或 splashr 以获取源代码。获得 HTML 后,您可以使用 rvest 对其进行解析。
  • 感谢您的回复。我正在尝试看看这两个包是否可以提供帮助。

标签: r web-scraping socrata soda


【解决方案1】:

在该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 数据帧。

【讨论】:

猜你喜欢
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多