2017-02-09 25 views
1

私はフィラデルフィア国際空港の到着予定(そして最終的に出発も同様に)を得るために、 'http://www.phl.org/Pages/Flight-Information.aspx#/Arrivals'ウェブページをスクラップしようとしています。これは私がこれまでに書いたコードです:ウェブを掻き集めるaspxウェブページR

require("rvest") 
require("dplyr") 

url1 <- "http://www.phl.org/Pages/Flight-Information.aspx#/Arrivals" 
url2 <- '//*[@id="ctl00_pageWrapper"]/main/div[3]/table' 

Trial_data <- url1 %>% read_html() %>% html_nodes(xpath=url2) %>% html_table() %>% data.frame() 

はしかし、これが唯一のテーブルのヘッダではなく、テーブルのデータ自体を削ります。私はウェブサイトのHTMLコードからウェブページ要素を調べ、スクリプトにXpathを使用しました。試行錯誤しながら、私はウィキペディアのテーブルを掻き集めるために同じコードを使いました。問題は.aspxのWebページにあると感じています。

本当にこれについての助けに感謝します!

+1

AngularJsを使用してテーブルの内容が動的に読み込まれるため、このデータは実行せずにAJAX呼び出しの結果を最初に取得すると利用できない場合があります。 – kieraf

+1

rvestはHTMLを取得するだけなので、データはロードされません。 RSeleniumを使用してページをロードし(プロセスで必要なスクリプトを実行して)、解析して返すことができますが、それ以上の作業です。この特定のデータがあれば、この同じデータをより使いやすい形式で公開するAPIがあると確信しています。そのため、検索のほうが次の段階になる可能性があります。 – alistaire

+0

[ここにAPIがあります](https://github.com/CityOfPhiladelphia/phl-airport-data) – alistaire

答えて

-1

上記のコメントは正しくありません.htmlコードは動的に入力されるため、rvestライブラリは動作しません。デベロッパーツールをオンにしてWebページを読み込んでダウンロードしたファイルを調べると、XHRタイプのファイルがいくつかあります。これらのファイルを調べると、FlightTracker.ashxという名前のファイルが、要求している情報を含むJSONファイルになります。 FYI

library(httr) 
library(jsonlite) 

url<-'http://www.phl.org/_layouts/15/Fuseideas.PHL.SharePoint/FlightTracker.ashx?dir=D' 
flightdata<-GET(url) 

output<- content(flightdata, as="text") %>% fromJSON(flatten=FALSE) 

:ファイルとカール一度

はJSONファイルを、それがHTTRの要求を行うだけの問題であるかを決定し、解析している「 http://www.phl.org/Style%20Library/PHL/Scripts/Angular/iata-data.jsn」が含ま:あなたはこのファイルを見てみたいことがあり航空会社と空港の略語、名前、リンクに関する情報

+0

あなたの答えをありがとう、コードが働いて、本当に私を助けました!私はまだFlightTracker.ashxファイルを見つけることができませんでした。私はまた、URLが私が使用したURLと少し違うことも見ています。 urlと.ashxファイルの検索方法を教えてください。 –

+0

目的のWebページを開きます。メニューとオプションの名前は、使用しているブラウザによって異なります。次に、ページを開いた状態で、[開発者ツール]メニューの[Webインスペクタ]オプションをオンにして、[ネットワーク]タブを選択してから、Webページをリロードします。ネットワークタグには、Webページに関連付けられているすべてのファイル(html、css、js、およびjson)がリストされます。それはあなたのデータを見つけるために各ファイルを調べることです。 – Dave2e

関連する問題