看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我在爬一個網頁, 但如果我爬得太快它會抓不到 因為有試過讓他常態性的休息, 但休息時間太短也不行 所以我設了一個if條件, 抓不到的時候就休息60秒 但他沒有執行 不知道是不是哪裡出了問題 [程式範例]: if(a==-1) { Sys.sleep(60) subdoc <- GET(suburl, config = set_cookies('JSESSIONID' = '8F0C390B5E686300BC04AA763900EB6D')) json <- xml_text(xml_find_all(content(subdoc), '/html/body')) } [環境敘述]: R version 3.4.0 (2017-04-21) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 7 x64 (build 7601) Service Pack 1 Matrix products: default locale: [1] LC_COLLATE=Chinese (Simplified)_People's Republic of China.936 [2] LC_CTYPE=Chinese (Simplified)_People's Republic of China.936 [3] LC_MONETARY=Chinese (Simplified)_People's Republic of China.936 [4] LC_NUMERIC=C [5] LC_TIME=Chinese (Simplified)_People's Republic of China.936 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] jsonlite_1.5 httr_1.3.1 xml2_1.0.0 loaded via a namespace (and not attached): [1] compiler_3.4.0 R6_2.2.0 tools_3.4.0 curl_2.3 Rcpp_0.12.13 [關鍵字]: Sys.sleep, if -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.97.165 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1525345091.A.DED.html
celestialgod: 你的a怎麼來的沒寫 05/04 05:36
augustana: a <- regexpr('rateList',json) 我如果有抓成功, json 05/04 16:43
augustana: 會有'ratelist'字串, 沒有成功就會找不到, a在環境裡面 05/04 16:47
augustana: 是atomic[1:1]-1 我把條件改成a[1]=-1試試 05/04 16:48
augustana: 我改a[1]==-1也沒用說, 他沒休息QQ 05/04 16:58
kokolotl: 不知道你的a長怎樣,你先把a或是a[1]印出來看看要==啥吧 05/04 17:49
cywhale: 也要看json是什麼 字串?或是char vectors? 才知道怎麼比 05/04 23:21
augustana: > class(json) [1] "character" 05/07 13:58
augustana: > a[1] [1] -1 05/07 13:59
andrew43: 目前還是看不出來哪裡有問題... 你如何確認有無暫停呢? 05/07 15:43
andrew43: 另可在sleep之前加上一句cat("a=", a, "\n")幫忙判斷 05/07 15:47
augustana: 因為如果有暫停的話他會停一分鐘繼續跑, 不過現在的狀 05/07 15:52
augustana: 況是他會馬上跑出error, 是因為json = ''產生的error 05/07 15:52
augustana: cat("a=", a, "\n")這句是什麼意思呀 05/07 15:53
augustana: 完整版的code請參考 https://ideone.com/SALda0 感謝~~ 05/07 15:59
kokolotl: > regexpr("aaa","")[1]==-1 [1] TRUE 05/07 16:00
kokolotl: 你的程式沒跑到那個if就掛了吧XD? 05/07 16:00
augustana: 什麼意思 有跑到那裏啦XD 05/07 16:05
augustana: 那個是在更後面的動作 05/07 16:05
kokolotl: cat那段可以讓你知道有沒有進到if 有進去沒停就神奇了 05/07 16:16
augustana: 好我來試試看~~再來update~~感溫~~ 05/07 16:39
kokolotl: 避開迴圈手動跑一次查錯在哪邊,應該比較快XD 05/07 16:45
augustana: 我剛剛放了cat 現在有一個感覺 就是 他其實成功很多次 05/07 16:57
augustana: 因為我已經看到五個a=-1惹, 還沒停, 所以出error應該是 05/07 16:57
augustana: 60秒不夠的關係XD BTW我有避開迴圈測試 但都會成功XD 05/07 16:58