小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

R語言網(wǎng)絡(luò)爬蟲經(jīng)驗(yàn)

 生物_醫(yī)藥_科研 2019-02-18

1

讀取

1#假設(shè)url為網(wǎng)頁
2library(rvest)
3read_html(rul)->website
4#該方法對于html/shtml都好用
5
6#可是網(wǎng)頁為.aspx時候這個方法不行,改為
7library(httr)
8GET(url,handle=handle(url)) %>%
9 content(at='parse') ->website


2

進(jìn)度條設(shè)置

在爬蟲的時候經(jīng)常爬到一個時候就自己斷了,問題是我們還看不出來是斷了還是沒有斷,

因此需要往里面加入進(jìn)度條,當(dāng)進(jìn)度條卡住的時候,就可以停止自己的程序在斷點(diǎn)重新跑


 1 library(tcltk)  
2u <- 1:2000  
3
4#開啟進(jìn)度條  
5
6pb <- tkProgressBar('進(jìn)度','已完成 %'0100)  
7
8for(i in u) {  
9   info<- sprintf('已完成 %d%%', round(i*100/length(u)))  
10   setTkProgressBar(pb, i*100/length(u), sprintf('進(jìn)度 (%s)', info),info)  
11}     
12#關(guān)閉進(jìn)度條  
13close(pb) 


3

時間間隔設(shè)置

就算有進(jìn)度條,程序隔一段時間還是會自動退出,有的網(wǎng)站設(shè)置了最長訪問時間,有的會拒絕請求。為了打破這種機(jī)制,在循環(huán)中插入人工時滯,雖然時間會長一點(diǎn),但是從自動化角度上看,其實(shí)還是節(jié)省了時間。時間的設(shè)置需要多試幾次,直到最后跑很久都不會斷掉為止。


1 System.time()  #中間放進(jìn)去的時間單位為秒


4

CSS vs Xpath

使用rvest包的時候,html_nodes函數(shù)可以使用CSS選擇器和Xpath兩種方式選擇節(jié)點(diǎn)。

大部分情況下,CSS選擇器方便快捷,實(shí)在是利器;但是在解決復(fù)雜性問題的時候(比如我需要找到包含符合一定規(guī)律的節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn)的最后一個節(jié)點(diǎn)的某個元素的時候),只能使用Xpath進(jìn)行設(shè)置尋找。注意CSS和Xpath雖然可以混用,但是Xpath一定要在CSS之前使用,因?yàn)閄path才能夠得到一系列的節(jié)點(diǎn)及其相互關(guān)系,而CSS則直接給你一些節(jié)點(diǎn),無法進(jìn)一步進(jìn)行更多的操作。


5

正則表達(dá)式

實(shí)在找不到什么好的關(guān)系的時候,不要忘了用正則表達(dá)式。stringr包的str_extract配合str_sub函數(shù)可以找到大部分問題。


6

斷點(diǎn)繼續(xù)的辦法

用data.frame數(shù)據(jù)結(jié)構(gòu)不斷進(jìn)行rbind,循環(huán)中的i,j,k注意要分開標(biāo),因?yàn)槎际侨肿兞?。一般來講以i作為標(biāo)準(zhǔn)比較好,也要看解決問題的層次。重復(fù)使用上層循環(huán)得到的數(shù)據(jù)是會有重復(fù)的,沒關(guān)系,我們有unique

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多