1 讀取 1#假設(shè)url為網(wǎng)頁 2 進度條設(shè)置 在爬蟲的時候經(jīng)常爬到一個時候就自己斷了,問題是我們還看不出來是斷了還是沒有斷, 因此需要往里面加入進度條,當(dāng)進度條卡住的時候,就可以停止自己的程序在斷點重新跑
3 時間間隔設(shè)置 就算有進度條,程序隔一段時間還是會自動退出,有的網(wǎng)站設(shè)置了最長訪問時間,有的會拒絕請求。為了打破這種機制,在循環(huán)中插入人工時滯,雖然時間會長一點,但是從自動化角度上看,其實還是節(jié)省了時間。時間的設(shè)置需要多試幾次,直到最后跑很久都不會斷掉為止。 1 System.time() #中間放進去的時間單位為秒 4 CSS vs Xpath 使用rvest包的時候,html_nodes函數(shù)可以使用CSS選擇器和Xpath兩種方式選擇節(jié)點。 大部分情況下,CSS選擇器方便快捷,實在是利器;但是在解決復(fù)雜性問題的時候(比如我需要找到包含符合一定規(guī)律的節(jié)點的父節(jié)點的父節(jié)點的最后一個節(jié)點的某個元素的時候),只能使用Xpath進行設(shè)置尋找。注意CSS和Xpath雖然可以混用,但是Xpath一定要在CSS之前使用,因為Xpath才能夠得到一系列的節(jié)點及其相互關(guān)系,而CSS則直接給你一些節(jié)點,無法進一步進行更多的操作。 5 正則表達式 實在找不到什么好的關(guān)系的時候,不要忘了用正則表達式。stringr包的str_extract配合str_sub函數(shù)可以找到大部分問題。 6 斷點繼續(xù)的辦法 用data.frame數(shù)據(jù)結(jié)構(gòu)不斷進行rbind,循環(huán)中的i,j,k注意要分開標(biāo),因為都是全局變量。一般來講以i作為標(biāo)準(zhǔn)比較好,也要看解決問題的層次。重復(fù)使用上層循環(huán)得到的數(shù)據(jù)是會有重復(fù)的,沒關(guān)系,我們有unique |
|