2017-08-27 6 views
0

Rは少し知っていますが、プロは知りません。私はRを使ったテキストマイニングプロジェクトに取り組んでいますRを使用して検索結果のURLからテキストを抽出する

私は連邦準備制度のウェブサイトでキーワード「インフレ」を検索しました。検索結果の2番目のページには、URL:(https://search.newyorkfed.org/board_public/search?start=10&Search=&number=10&text=inflation)があります。

このページには10件の検索結果があります(10個のURL)。私は、これらの10個のURLのそれぞれに対応するページを「読み込み」、それらのWebページから.txtファイルにテキストを抽出するRにコードを書きたいと思います。私の唯一の入力は上記のURLです。

ご協力いただきありがとうございます。同様の古い投稿がある場合は、私にもそれを紹介してください。ありがとうございました。

答えて

0

これは、このページを廃棄する方法の基本的なアイデアです。スクラップされるページがたくさんある場合、rが遅くなるかもしれませんが。 あなたの質問は少し曖昧です。最終結果は.txtファイルになります。 pdfを持っているウェブページは何ですか?はい。このコードを使用して、pdfsを持つWebページのファイル拡張子をpdfに変更することができます。

library(xml2) 
library(rvest) 

urll="https://search.newyorkfed.org/board_public/search?start=10&Search=&number=10&text=inflation" 

    urll%>%read_html()%>%html_nodes("div#results a")%>%html_attr("href")%>% 
     .[!duplicated(.)]%>%lapply(function(x) read_html(x)%>%html_nodes("body"))%>% 
     Map(function(x,y) write_html(x,tempfile(y,fileext=".txt"),options="format"),., 
      c(paste("tmp",1:length(.)))) 

これは、上記のコードの内訳です:あなたがからスクラップしたいURL

urll="https://search.newyorkfed.org/board_public/search?start=10&Search=&number=10&text=inflation" 

はあなたが必要とするすべてのURLのを取得:

allurls <- urll%>%read_html()%>%html_nodes("div#results a")%>%html_attr("href")%>%.[!duplicated(.)] 

あなたのテキストをどこに保存しますか?一時ファイルを作成します。

tmps <- tempfile(c(paste("tmp",1:length(allurls))),fileext=".txt") 

現在のとおりです。 allurlsは、クラス文字です。あなたはそれをスクラップできるようにxmlに変更する必要があります。最後に、上記で作成したtmpファイルに書き込んでください。

allurls%>%lapply(function(x) read_html(x)%>%html_nodes("body"))%>% 
     Map(function(x,y) write_html(x,y,options="format"),.,tmps) 

何も残さないでください。たとえば、..."format"),の後には期間があります。それを考慮に入れてください。 ファイルはtempdirで書かれています。それらがどこにあるのかを判断するには、コンソールにコマンドtempdir()と入力するだけで、ファイルの場所がわかります。同時に、tempfileコマンド内で、スクラップ時にファイルの場所を変更することができます。

これが役に立ちます。

+0

ありがとう、オニャン!非常に有用な答え!再度、感謝します! – SBAG009

1

ここに行きます。メインの検索ページでは、URLがソースコードで容易に識別できるので、正規表現を使用できます。

https://statistics.berkeley.edu/computing/r-reading-webpagesの助けを借りて)

library('RCurl') 
library('stringr') 
library('XML') 

pageToRead <- readLines('https://search.newyorkfed.org/board_public/search? 
start=10&Search=&number=10&text=inflation') 
urlPattern <- 'URL: <a href="(.+)">' 
urlLines <- grep(urlPattern, pageToRead, value=TRUE) 

getexpr <- function(s,g)substring(s, g, g + attr(g, 'match.length') - 1) 
gg <- gregexpr(urlPattern, urlLines) 
matches <- mapply(getexpr, urlLines, gg) 
result = gsub(urlPattern,'\\1', matches) 
names(result) = NULL 


for (i in 1:length(result)) { 
    subURL <- result[i] 

    if (str_sub(subURL, -4, -1) == ".htm") { 
    content <- readLines(subURL) 
    doc <- htmlParse(content, asText=TRUE) 
    doc <- xpathSApply(doc, "//text()[not(ancestor::script)][not(ancestor::style)][not(ancestor::noscript)][not(ancestor::form)]", xmlValue) 
    writeLines(doc, paste("inflationText_", i, ".txt", sep="")) 

    } 
} 

しかし、あなたはおそらく気づいて、これが唯一の.htmページを解析し、検索結果にリンクされた.pdfドキュメントのために、私はあなたを助言します行く見て:http://data.library.virginia.edu/reading-pdf-files-into-r-for-text-mining/

+0

ありがとう、ヴィンセント。それは非常に便利で多くのことに役立ちます! – SBAG009

関連する問題