Rを使用して、ファイルの「クリック」を模倣してダウンロードします

ハム

Rに、このページから石油およびガスリグに関するExcelファイルを自動的にダウンロードしてもらいたいです北米ロータリーリグカウントピボットテーブル(2011年2月-現在)」(2番目のオプション)をクリックしてファイルをダウンロードしますが、Rでこれを行う方法が見つからないようです。

手がかりはありますか?ありがとう!

注:残念ながら、download.file()の使用は機能していないようです。MS Excelでファイルを開こうとすると、拡張子が正しくないか、ファイルが破損しているというメッセージが表示されます。使用すると、Rでもこのエラーが発生しますreadxl::read_excel()エラー:評価エラー:unzGetCurrentFileInfoのzipfileでエラー-103

アウレリアーノ・ゲデス

いくつかの助けにLIBSに
あなたが実際にのみ必要になりますdplyrpurrr、stringr、とxml2

library(tidyverse)
library(rvest)
#> Loading required package: xml2
#> 
#> Attaching package: 'rvest'
#> The following object is masked from 'package:purrr':
#> 
#>     pluck
#> The following object is masked from 'package:readr':
#> 
#>     guess_encoding
library(htmltab)
library(xml2)
library(readxl)

一部のサイトでは部分リンクを使用しているため、この方法が好きです。

base <- "https://rigcount.bakerhughes.com"
url <- paste0(base, "/na-rig-count")

# find links
url_html <- xml2::read_html(url)
url_html %>% 
  html_nodes("a") %>% 
  html_attrs() %>% 
  bind_rows() -> url_tbl

hrefコンテンツを確認し、興味のあるパターンを見つけinspectてください。ブラウザでも使用できます。これは非常に役立ちます。

url_tbl %>% 
  count(href)
#> # A tibble: 22 x 2
#>    href                                                                        n
#>    <chr>                                                                   <int>
#>  1 /                                                                           1
#>  2 /email-alerts                                                               1
#>  3 /intl-rig-count                                                             1
#>  4 /na-rig-count                                                               1
#>  5 /rig-count-faqs                                                             1
#>  6 /rig-count-overview                                                         2
#>  7 #main-menu                                                                  1
#>  8 https://itunes.apple.com/app/baker-hughes-rig-counts/id393570114?mt=8       1
#>  9 https://rigcount.bakerhughes.com/static-files/4ab04723-b638-4310-afd9-…     1
#> 10 https://rigcount.bakerhughes.com/static-files/4b92b553-a48d-43a3-b4d9-…     1
#> # … with 12 more rows

おそらく、静的ファイルは良いパターンかもしれないことに気づきhrefましたが、それから私はでより良いパターンを見つけましたtype

url_tbl %>% 
  filter(str_detect(type, "ms-excel")) -> url_xlsx

リストを作成します(余分なドット、スペース、特殊文字などのノイズを避けることを忘れないでください)誰かがそれらを避けるためのより良い方法を提案することを願っています

myFiles <- pull(url_xlsx, "href")
names <- pull(url_xlsx, "title")
names(myFiles) <- paste0(
    str_replace_all(names, "[\\.\\-\\ ]", "_"), 
    str_extract(names, ".\\w+$")
)

# download data
myFiles %>% 
  imap(
    ~ download.file(
      url = .x, 
      destfile = .y,
      method="curl", # might be not necessary 
      extra="-k"
    )
  )
#> $`north_america_rotary_rig_count_jan_2000_-_current.xlsb`
#> [1] 0
#> 
#> $`north_american_rotary_rig_count_pivot_table_feb_2011_-_current.xlsb`
#> [1] 0
#> 
#> $`U.S.  Monthly Averages by State 1992-2016.xls`
#> [1] 0
#> 
#> $`North America Rotary Rig Counts through 2016.xls`
#> [1] 0
#> 
#> $`U.S. Annual Averages by State 1987-2016.xls`
#> [1] 0
#> 
#> $Workover_9.xls
#> [1] 0

reprexパッケージ(v0.3.0)によって2020-12-16に作成されました

これで、ファイルが表示される場合があります。

names(myFiles) %>%
    map(
        readxlsb:read_xlsb
    ) -> myData

お役に立てば幸いです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Rを使用して、Webページのダウンロードファイルボタンを「クリック」するのを模倣します

Rを使用して、[データセットのダウンロード]をクリックするのを模倣し、ファイルを別のフォルダーに保存します

別のクリックを使用してダウンロードリンクのクリックを模倣する

リンクをクリックしてsvgファイルをダウンロードします

PythonSeleniumを使用してファイルをクリックしてダウンロードする

ファイルをダウンロードし、リンクをクリックして一番下のdivまでスクロールします

JFrogCLIを使用して現在のディレクトリにファイルをダウンロードします

JQueryを使用して「ダウンロード」リンクをクリックしてもファイルはダウンロードされません

リンクをクリックして、curlを使用してファイルをダウンロードします

クリックしたファイルを一覧表示してFTPからダウンロードします

WebClientを使用してクエリをPOSTし、ファイルをダウンロードします

Meteorのリンクをクリックしてファイルをダウンロードする

ボタンクリックでカールを使用してファイルをダウンロードする

POSTメソッドを使用してXMLファイルをダウンロードし、ドキュメントのディレクトリに保存します

ファイルをクリックしてSeleniumPythonをダウンロードします

Microsoft Graphを使用して、OneDriveファイルへの永続的なパブリックダウンロードリンクを作成します

ドロップダウンボックスの変数を使用してXMLファイルを作成します

リンクを使用してjsonファイルをダウンロードします

GeckoWebBrowserを使用してHTMLボタンクリックでファイルをダウンロードする

Rを使用して、*共有* Googleドライブディレクトリから個々の共有ファイルをダウンロードします

Seleniumを使用して、「javascript:__ doPostBack( 'LeaderBoard1 $ cmdCSV'、 '')」をクリックしてファイルをダウンロードします。

Restangularリクエストを使用してRESTAPIからファイルをダウンロードします

HTTRGETリクエストを使用してgithubから.csvファイルをダウンロードします

共有リンクを使用して、ファイルをクラウドストレージフォルダーにアップロードします

Rを使用してWebページのダウンロードファイルボタンを「クリック」する

Windowsコマンドプロンプトウィンドウでキーボードを使用して右クリックを模倣する

Azureストレージアカウント、ファイルをダウンロードするためのパブリックリンクを使用してファイルをパブリックにします

AJAXリクエストへの応答としてcsvファイルをダウンロードします

「クリックして請求書をダウンロード」リンクのあるメールがありますが、このPDFをメールの添付ファイルとして使用したいと思います。SpringbootJavaの使用

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ