爬蟲寫完了,運行了,然後呢?

下面是作業原文

之前答應師兄爬取biostar論壇全部帖子(https://www.biostars.org/),並根據閱讀數和點贊數 挑選排名靠前的問題翻譯。

看到這個問題,我首先想到的是R和python。基礎的爬蟲無非是:構建URL根據頁面結構解析爬取關鍵信息整理數據格式輸出結果

一、善用搜索

如果作爲一個爬蟲小白,首先要做的是去利用周邊可利用的資源,互聯網時代,你想要的資料網絡上基本上都有。

於是我上網搜索了"R 爬蟲",發現一個叫做"revst"的R包。

其核心函數: read_html :read_html (url) 爬取整個頁面 html_nodes : 選擇提取文檔中指定元素的部分(用於定位到待提取的信息) html_text 提取標籤內的文本(用於提取你定的位置的內容)

詳情可以參考:https://blog.csdn.net/weixu22/article/details/79237512

二、準備爬蟲所需信息

  • 構建url:觀察每一頁的url變化規律"https://www.biostars.org/?page=2&sort=update&limit=all%20time&q=" 變化的只有鏈接裏"page=2"中的數字。
  • 定位所需內容: 打開頁面->點擊F12->點擊左上角帶箭頭的小圖標->點擊屏幕上所要定位的內容->右擊元素審覈界面中所定的位置->點擊copy、copy xpath。使用xpath即可定位所需內容。

三、開始爬取

1.加載相關的R包

library(rvest)

2.爬取biostar所有問題、點贊數、閱讀數、以及問題鏈接

biostars_inf<-data.frame()
for (i in 1:2163) {
  #2163是總的頁面個數
  print(i)
  #循環構建url
  web<-read_html(paste0("https://www.biostars.org/?page=",i,"&sort=update&limit=all%20time&q="))
  #爬取問題
  question<-web %>% html_nodes(xpath = "//*[@id=\"post-list\"]/div/div[3]/div/a") %>% html_text()
  #爬取點贊數
  vote<-web %>% html_nodes(xpath = "//*[@id=\"post-list\"]/div/div[1]/div[1]/div[1]") %>% html_text()
  vote<-gsub("k", "000", vote)
  vote<-as.numeric(as.character(vote))
  #爬取閱讀數
  views<-web %>% html_nodes(xpath = "//*[@id=\"post-list\"]/div/div[1]/div[3]/div[1]") %>% html_text()
  views<-gsub("k", "000", views)
  views<-as.numeric(as.character(views))
  #構建問題鏈接qustion_url
  short_question_url<-as.character(web %>% html_nodes(xpath = "//*[@id=\"post-list\"]/div/div[3]/div[1]/a") %>% html_attrs())
  question_url<-paste0("https://www.biostars.org",short_question_url)
  biostars<-data.frame(question,vote,views,question_url)
  biostars_inf<-rbind(biostars_inf,biostars)
}

tip:爬取成功與否與網絡條件及網站反爬蟲機制有關,我在爬取過程中出現過幾次停爬。我的操作是:中斷爬蟲,修改循環的起始點,從中斷處繼續往下跑循環。

3.根據閱讀數和點贊數對問題排序。

topviews<-biostars_inf[order(as.numeric(biostars_inf$views),decreasing=T),]
topvote<-biostars_inf[order(as.numeric(biostars_inf$vote),decreasing=T),]

讓我們看看點贊數最多的5個問題?

What Are The Most Common Stupid Mistakes In Bioinformatics?

The Biostar Handbook. A bioinformatics e-book for beginners

Recommend Your Favorite Bioinformatics Books

What Tools/Libraries Do You Use To Visualize Genomic Feature Data?

Your Favorite Bioinformatics Blogs (March 2010)

那查看數最多的五個問題有時啥呢?

Gene Id Conversion Tool

Understanding up and down regulated genes from LOG2 foldchange or foldchange

How Do I Draw A Heatmap In R With Both A Color Key And Multiple Color Side Bars?

Tools To Calculate Average Coverage For A Bam File?

How To Filter Mapped Reads With Samtools

下面是我的點評

怎麼說呢,要求一個一直用python的小夥伴來刻意使用R寫爬蟲的確難爲他了,所以可以看到代碼裏面初始化變量,然後for循環的修改變量,因爲代碼裏面爬蟲獲取內容耗時很長,所以這個代碼的慢速並不能體現出來,這種代碼方式肯定是不推薦的!

其次,爬蟲裏面沒有加入隨機休眠函數,所以很容易被反爬機制檢測到而中斷,當然高級操作,還有使用多個代理IP來解決。

重點來了

難道爬取到的6.5M的 6萬多個問題記錄就簡單排序嗎?

更深層次的分析有哪些?

比如詞雲?

再比如根據問題的時間做趨勢問題,流行度?

感興趣的朋友可以繼續留言,或者來信( [email protected] )交流,獲取我們爬蟲的結果。

當然,你直接複製粘貼裏面的代碼去R運行也是可以拿到爬蟲結果的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章