3

R を使用して、文字列値に基づいて特定の Wikipedia ページに移動しようとしています。私が調べているキーワードのリストの正確なウィキペディアの URL を持っていないので (たとえば、「プログレッシブロック」という検索用語は、Progressive_rock で終わる URL に移動します)、キーワードを Google に渡すことを考えました。 Feeling Lucky」で検索し、結果のウィキペディア ページの HTML をスクレイピングします。

これを試す過程で、Rでフォームを送信するのに問題があることがわかりました.RセッションでGoogleクエリを実行し、トップページのHTMLを返す再現可能な例、またはWikipediaの検索に基づいて投稿できますか?検索ワード?

私はほとんどの Web スクレイピングに Hadley の優れた rvest パッケージを使用してきましたが、rvest のマニュアルから適用された例を使用しても、この側面を機能させることができませんでした。

goog<-html_session("https://www.google.com")

search <- html_form(html("https://www.google.com"))[[1]]

search.mod<-set_values(search, q = "My little pony")

submit_form(goog, search.mod, submit='btnI')

どちらが返されますか:

 Error: length(url) == 1 is not TRUE

同じ運で、ウィキペディアの検索も直接試しました。

url<-"http://en.wikipedia.org/wiki/Main_Page"

wiki<-html_session(url)

search.form<-html_form(wiki)[[1]]

form.mod<-set_values(search.form, search="Frank Zappa")

submit_form(wiki,form.mod,submit='go')

同じエラーを返します。信じられないほど単純な間違いを犯しているのではないかと思いますが、それが何であるかわかりません。

検索フォームを送信するためのオンラインの例の多くは、httr、RCurl、および RSelenium パッケージを使用しているように見えますが、Google またはウィキペディアで機能する特定の例は見つかりませんでした。また、Google が「I'm Feeling Lucky」検索のフォーマット。同様の質問で提案されているように、WikipediRパッケージも調べました(Rを介したウィキペディアのSumbitクエリ)が、検索機能がないようです。

4

1 に答える 1

3

ウィキペディアまたはグーグルで検索を送信する場合、html_formどちらも URL でクエリを渡す方法を提供するため、 は必要ありません。たとえば、ウィキペディアで「リンゴ」を探している場合は、次のように入力します。

http://en.wikipedia.org/wiki/Special:Search/apple

この名前のページがあるため、これはアップルのページにリダイレクトされます。

http://en.wikipedia.org/wiki/Special:Search/Prog_rock

自動リダイレクトが行われているため、適切なページも見つかります。

「Progressiv Rock」を探している場合、ページは見つかりませんが、いくつかの提案が表示されます。これを解析してみることができます。

http://en.wikipedia.org/wiki/Special:Search/Progressiv_rock

于 2015-02-16T04:35:56.177 に答える