selenium爬虫操作网页(实战篇)

优采云 发布时间: 2022-05-08 00:23

  selenium爬虫操作网页(实战篇)

  前面我们遇到了一个爬虫难题:,选择了[在R里面配置selenium爬虫环境](),仅仅是安装和配置好了在R里面使用selenium爬虫,打开一个JavaScript控制的动态网页仅仅是爬虫的开始,接下来需要跟这个网页进行各式各样的交互。首先放出一些学习链接:查看源代码如果你使用谷歌浏览器自行打开网页:会发现它的源代码里面根本就没有各式各样的下一页等按钮,全部被隐藏在了如下所示的JavaScript脚本里面:

      <br />        document.write('');<br />        document.write('');<br />        document.write('');<br />        document.write('');<br />        document.write('');<br />        document.write('');<br />    <br />

  但是这些JavaScript脚本是网页开发者并不会公开的,所以我们没办法去查看它们里面的函数。但是可以使用selenium爬虫打开的网页,代码如下:

  library(RSelenium)<br />library(rvest)<br />library(stringr)<br /><br />################调用R包#########################################<br />library(rvest)        # 为了read_html函数<br />library(RSelenium)    # 为了使用JavaScript进行网页抓取<br /><br />###############连接Server并打开浏览器############################<br />remDr %<br />  html_nodes("a") %>% html_attr("href") <br />links<br />i=1<br />while(i%<br />    html_nodes("a") %>% html_attr("href") <br />  print(lks)<br />  links=c(links,lks)<br />}<br />links=unique(links)<br />links<br />save(links,file = 'plasmid_detail_links.Rdata')<br />

  当然了,拿到的links本身,还需进行二次访问,继续摘取里面的信息。第二次访问具体每个网页前面的links变量里面储存了全部的plasmid的介绍页面的url

  

  接下来就循环访问每个plasmid网页获取信息,代码如下:

  load(file = 'plasmid_detail_links.Rdata')<br />links<br />kp=grepl('plasmid_detail.html',links)<br />links=links[kp]<br />length(links)<br />remDr %   html_nodes('.panel-body')<br />  c1 %  html_text()  <br />  c2 %  html_text()  <br />  c3 %  html_text()  <br />  c1=gsub('\t','',c1);c1=gsub('\n','',c1);<br />  c2=gsub('\t','',c2);c2=gsub('\n','',c2);<br />  c3=gsub('\t','',c3);c3=gsub('\n','',c3);<br />  # id="plasmidName"<br />  plasmidName % <br />    read_html() %>%   html_nodes('#plasmidName') %>%  html_text()  <br />  # id="plasmid_identification"<br />  plasmid_identification % <br />    read_html() %>%   html_nodes('#plasmid_identification') %>%  html_text() <br />  info=data.frame(plasmidName,plasmid_identification,c1,c2,c3)<br />  rm(htmls)<br /><br />  write.table(info,file = 'info1.txt',<br />              col.names = F,row.names = F,<br />              append = T)<br />}<br />

  保存为文件:

  

  更复杂的使用RSelenium+rvest爬取动态或需登录页面教程参考:其它爬虫基础知识:文末友情宣传强烈建议你推荐我们生信技能树给身边的博士后以及年轻生物学PI,帮助他们多一点数据认知,让科研更上一个台阶:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线