2016-05-01 5 views
0

にスクラップ「リリース名」列の「雇用情勢」を含むすべての日付について、ウェブスクレイプhttp://www.bls.gov/schedule/schedule/2007/2007_sched.htmが必要です。ウェブ廃車出力は次のようになります。ウェブをプレーンテキストからR

Jan. 5, Feb. 2, 2007, March 9, April 6, May 4, June 1, 2007 
July 6, 2007, Aug. 3, Sept. 7, Oct. 5, Nov. 2, 2007, Dec. 7 
#year can be ignored/omitted 

http://www.bls.gov/schedule/news_release/2015_sched.htmために同じことを達成するために、次のように使用:

library(rvest) 
pg <- read_html("http://www.bls.gov/schedule/news_release/2015_sched.htm") 

# target only <td> elements under bodytext div 
body <- html_nodes(pg, "div#bodytext") 

# use this new set of nodes and a relative XPath to get initial <td> elements, then get their siblings 
es_nodes <- html_nodes(body, xpath=".//td[contains(., 'Employment Situation for')]/../td[1]") 

# clean up and make dates 
nfpdates <- as.Date(trimws(html_text(es_nodes)), format="%A, %B %d, %Y") 

nfpdates下日付のリストを格納されています。私はhttp://www.bls.gov/schedule/schedule/2007/2007_sched.htmのために働くためにそのコードを適合させようとしましたが失敗しました。問題は、これらの2つのURLが異なるフォーマットで情報を格納することです。情報がHTMLテーブルではなくプレーンテキストで保存されている場合、どのようにしてそのURLから日付を抽出できますか?ありがとうございました。

答えて

1

これは完全な解決策ではありませんが、Webページから「The Employment Situation」を含む要求された行を引き出します。あなたが要求しているテキストはpreタグに関連付けられています。このページには4つのセクションがあります(セクション3 & 4は空です)。

library(rvest) 
url <- "http://www.bls.gov/schedule/schedule/2007/2007_sched.htm" 
body<-html_nodes(read_html(url), "pre") 
#text= xml_text(body[1]) #only uses the first table 
text= sapply(1:length(body), function(i) {xml_text(body[i])}) #looks at all tables 
#create one list for all the captured lines 
table1<-unlist(strsplit(text, "\n")) 
#find lines that match the search string 
employ<-table1[grepl("The Employment Situation", table1)] 

最終的な結果は次のとおりです。

[1] "雇用状況、2006年12月1月5日\トン午前8時30分の\ rを"
[2]「雇用状況、午前8時30分の\ rを「

トン\ 2007年1月\ tFeb。2、2007 ...

この時点で、それはstrsplit、GSUBを使用しての問題であり、Cにはgrepそれぞれの行から希望のテキストを分離してください。 まだ問題が残っている場合は、各行から日付を抽出することに焦点を当てた別のStackoverflow質問があります。 幸運。

関連する問題