普通的爬蟲,其實什麼編程語言都差很少,由於都是網頁的html源代碼字符串的解析而已,可是不少網頁是具備防止爬蟲的功能,就是沒法直接獲取html源代碼字符串,須要經過JavaScript來互動。好比:
-
https://shuju.wdzj.com/
-
re庫(正則提取) -
requests庫(網頁數據抓取) -
谷歌瀏覽器(對網頁進行分析) -
BeautifulSoup庫(網頁標籤和內容提取) -
selenium庫+PhantomJS(得到渲染後的頁面)
首先下載Selenium Server (Grid)
-
它提供了瀏覽器中的點擊,滾動,滑動,及文字輸入等驅動程序。這樣,利用Selenium便可以經過腳本程序來替代人工進行測試一個開發軟件的各類功能。在處理爬蟲任務中,常常遇到須要輸入文字,進行下拉菜單選擇,以及鼠標點擊等情景。 -
Selenium Server容許你在不一樣的瀏覽器上打開網址,對網頁進行操做,並爬取網頁元素的獨立JAVA程序。在處理爬蟲任務中,常常遇到須要輸入文字,進行下拉菜單選擇,以及鼠標點擊等情景。 經過Selenium Server咱們能夠對網頁進行操做,而後爬取操做後的數據,從而進行爬取動態頁面。
-
https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
而後配置chrome + chromeDriver
cd /Applications/Google\ Chrome.app/Contents/MacOS/
(base) jmzengdeMacBook-Pro:MacOS jmzeng$ ls -lh
-rwxrwxr-x 1 jmzeng admin 207K May 2 06:39 Google Chrome
-rwxr-xr-x@ 1 jmzeng admin 10M May 21 09:19 chromedriver
xattr -d com .apple .quarantine chromedriver
-
https://chromedriver.storage.googleapis.com/index.html?path=2.29/
接着開啓Selenium Server (Grid)
java -jar selenium-server-standalone-3 .141 .59 .jar
09 :27 :52.106 INFO [GridLauncherV3.parse] - Selenium server version: 3 .141 .59, revision: e82be7d358
09 :27 :52.174 INFO [GridLauncherV3.lambda$buildLaunchers$3] - Launching a standalone Selenium Server onport 4444
2020 -05-21 09 :27 :52.205 :INFO ::main: Logging initialized @ 274ms to org.seleniumhq.jetty9.util.log.StdErrLog
09: 27: 52.350 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
09: 27: 52.416 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444
最後寫R爬蟲
library(RSelenium)
library(rvest)
library(stringr)
################調用R包#########################################
library(rvest) # 爲了read_html函數
library(RSelenium) # 爲了使用JavaScript進行網頁抓取
###############鏈接Server並打開瀏覽器############################
remDr <- remoteDriver(remoteServerAddr = "127.0.0.1"
, port = 4444
, browserName = "chrome") #鏈接Server
remDr$open() #打開瀏覽器
remDr$navigate( "https://shuju.wdzj.com/") #打開網頁
-
https://ropensci.org/tutorials/rselenium_tutorial/ -
http://thatdatatho.com/2019/01/22/tutorial-web-scraping-rselenium/
須要區分靜態網頁和動態網頁
文末友情宣傳
-
生信爆款入門-全球聽(買一得五)(第5期)(多是最後一期)你的生物信息學入門課 -
(必看!)數據挖掘第3期(兩天變三週,實力加量),醫學生/臨牀醫師首選技能提升課 -
生信技能樹的2019年終總結 ,你的生物信息學成長寶藏 -
2020學習主旋律,B站74小時免費教學視頻爲你領路,還等什麼,看啊!!!
![](http://static.javashuo.com/static/loading.gif)
本文分享自微信公衆號 - 生信技能樹(biotrainee)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。html