爬虫写完了,运行了,然后呢?

下面是作业原文

之前答应师兄爬取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运行也是可以拿到爬虫结果的!

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