r library car_R语言网络爬虫:获取近7000种中草药信息

网络爬虫参考以前的,但是这次对象不一样,为了获取中草药信息,如别名、基源、功效、生境分布、用法用量等。

R语言网络爬虫获取中药材价格信息

爬取百度百科信息,大批量获取专业领域知识,告别ctrl+c/ctrl+v时代,网络爬虫,值得拥有。

R语言爬取PubChem上化合物信息

爬取对象网址

http://www.pharmnet.com.cn/tcm/knowledge/detail/106330.html

f8ec85c57e3166094e44baca34321bfe.png

查看网址是否允许爬虫:网址后加robots.txt:

http://www.pharmnet.com.cn/robots.txt

结果:

User-Agent:*
Allow:/

01

调用包

#以下安装包不能调用的需要手动安装:install.packages("")rm(list=ls())#清除所有变量library(data.table)library(openxlsx)library(stringr)library(stringi)library(VennDiagram)library(RCurl)library(stringr)library(XML)library(downloader)library("dplyr") # 管道操作符所属的包library("rvest") # 本次爬取网页数据的工具在这里

原始资料准备:文件名ID.txt,需要获取的每个中草药ID

3c551d8e82e4f946f8e52970d26c0e64.png

#准备文件名为“ID.txt”的文件,文件仅有一列,第一行为“ID”#读取文件ZYID "ID.txt",header = T,stringsAsFactors = F)ZYID"ID")]

开始循环获取资料

#开始循环爬取for(i in 1:nrow(ZYID)){#数据清洗,is.na为判别函数,判断是否为空值: if(is.na(ZYID [i,ID])){      print(paste("处理第",i,"个代号时发现,ID为:",ZYID [i,ID],",已经跳过"))#代号为空时打印:处理第i个代号时发现ID为:ZYID [i,ID]已经跳过      next    } else {      print(paste("开始处理第",i,"个草药,ID为:",ZYID [i,ID]))#开始处理第i个草药,ID为:ZYID [i,CID]    }#下载网页文件file "./",ZYID [i,ID],aurl "http://www.pharmnet.com.cn/tcm/knowledge/detail/",a,#以下5行代码是用于下载html文件,若需要下载可去掉开头的井号符#JudgeHtml#ifelse(JudgeHtml==0,'download.file(url, destfile = file, quiet = TRUE)','F')#如果下载链接可行,就下载,否者退出#ifelse(JudgeHtml==0,Html#cat(ifelse(file.exists(file),"Html文件下载成功!","Html文件下载失败!"))#ZYID [i,"Html"] # 读取网页源码(read_html())web %read_html(encoding = "GBK") # 有时候其他网站是UTF-8是编码方式Title % html_node("h1") %>% html_text()#Detail % html_node("#fontsize") %>% html_text()#ZYID [i,"Title"] ZYID [i,"Detail"] }write.csv(ZYID,file="./ZYID.csv")#导出数据

02

结果

ba86e57a1d915de86bef3073bebfcd8a.png

ba8059e5f418d3ce8f0ef218627b9358.png

3500个大概花费20min

完整代码

#以下安装包不能调用的需要手动安装:install.packages("")rm(list=ls())#清除所有变量library(data.table)library(openxlsx)library(stringr)library(stringi)library(VennDiagram)library(RCurl)library(stringr)library(XML)library(downloader)library("dplyr") # 管道操作符所属的包library("rvest") # 本次爬取网页数据的工具在这里#准备文件名为“ID.txt”的文件,文件仅有一列,第一行为“ID”#读取文件ZYID "ID.txt",header = T,stringsAsFactors = F)ZYID"ID")]#开始循环爬取for(i in 1:nrow(ZYID)){#数据清洗,is.na为判别函数,判断是否为空值: if(is.na(ZYID [i,ID])){      print(paste("处理第",i,"个代号时发现,ID为:",ZYID [i,ID],",已经跳过"))#代号为空时打印:处理第i个代号时发现ID为:ZYID [i,ID]已经跳过      next    } else {      print(paste("开始处理第",i,"个草药,ID为:",ZYID [i,ID]))#开始处理第i个草药,ID为:ZYID [i,CID]    }#下载网页文件file "./",ZYID [i,ID],aurl "http://www.pharmnet.com.cn/tcm/knowledge/detail/",a,#以下5行代码是用于下载html文件,若需要下载可去掉开头的井号符#JudgeHtml#ifelse(JudgeHtml==0,'download.file(url, destfile = file, quiet = TRUE)','F')#如果下载链接可行,就下载,否者退出#ifelse(JudgeHtml==0,Html#cat(ifelse(file.exists(file),"Html文件下载成功!","Html文件下载失败!"))#ZYID [i,"Html"] # 读取网页源码(read_html())web %read_html(encoding = "GBK") # 有时候其他网站是UTF-8是编码方式Title % html_node("h1") %>% html_text()#Detail % html_node("#fontsize") %>% html_text()#ZYID [i,"Title"] ZYID [i,"Detail"] }write.csv(ZYID,file="./ZYID.csv")#导出数据

03

结果文件

结果内容都在一个单元格内,再利用EXCEL提取出相应的内容即可。

共获取6800条信息,不重复的有6300条。

d5047bb7649ad2483fa7c74ea7c07337.png

想要文件可以联系我

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值