R語言爬蟲

1.簡單爬取一個網頁

url<-“http://hz.house.ifeng.com/detail/2014_10_28/50087618_1.shtml
tbls<-readHTMLTable(url)
sapply(tbls,nrow)
NULL NULL
93 8
pop<-readHTMLTable(url,which = 1)
#存儲pop爲CSV文檔
write.csv(pop,file=”F:/pop.csv”)

2.爬取噹噹網圖書排名及價格

library(xml2)
library(dplyr)
library(dplyr)
library(stringr))
#對爬取網頁進行設定並創建數據框
i<-1:25
book_order<-data.frame()
#使用for循環進行批量數據爬取
for(i in 1:25){
+ web<-read_html(str_c(“http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-“,i),encoding=”gbk”)
#爬取書的排名,html_nodes從網頁上選擇節點,括號內的節點可以使用
#SelectorGadget工具得到谷歌上的網頁節點,html_text()用於提取網頁上的信息
+ book_rank<-web%>%html_nodes(‘.list_num’)%>%html_text()
#爬取書的名字
+ book_name<-web%>%html_nodes(‘.name a’)%>%html_text()
#爬取書的作者
+ book_author<-web%>%html_nodes(‘.star+ .publisher_info’)%>%html_text()
#爬取書的價格
+ book_price<-web%>%html_nodes(‘p:nth-child(1) .price_n’)%>%html_text()
#創建數據框並存儲以上信息
+ book<-data_frame(book_rank,book_name,book_author,book_price)
+ book_order<-rbind(book_order,book)
+ }
#將數據寫入csv文檔
write.csv(book_order,file=”F:/R語言爬蟲/book_order.csv”)

3.爬取招聘網站信息(用RStudio軟件實現的)

3.1抓取一個頁面
library(“rvest”)
library(“stringr”)#用於去除多餘字符
#獲取網址
url0<-“https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E6%258C%2596%25E6%258E%2598,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=
#讀取網頁信息
web<-read_html(url0)
#獲取工作名稱
title<-web %>% html_nodes(‘div.el p.t1 span’) %>% html_text()
#去除title中的空格和換行符,只保留文字
title_extr<-function(x){return(str_extract(x,’[^\r\n| ]+’))}
title<-title_extr(title)
#獲取公司名
company<-web %>% html_nodes(‘div.el span.t2’) %>% html_text()
#去除第一行“公司名”,使company的行數與title的行數一致
company<-company[2:length(company)]
#工作地點
location<-company<-web %>% html_nodes(‘div.el span.t3’) %>% html_text()
location<-location[2:length(location)]
#工資
salary<-web %>% html_nodes(‘div.el span.t4’) %>% html_text()
salary<-salary[2:length(salary)]
#發佈時間
Time<-web %>% html_nodes(‘div.el span.t5’) %>% html_text()
Time<-time[2:length(Time)]
data<-data.frame(title,company,location,salary,Time)
names(data)<-c(“工作名稱”,”公司名”,”工作地點”,”工資”,”發佈時間”)
data
write.csv(data,file=”F:/R語言爬蟲/zhaopin.csv”)

3.2爬取多個頁面
library(“rvest”)#用於抓取網頁
library(“stringr”)#用於去除沒用的字符或空格
#獲取網址
url0<-“https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E6%258C%2596%25E6%258E%2598,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=
link<-list()
dat<-data.frame()
#計數器
n<-0
#加載下一頁的網址
download_url<-function(url)
{
web<-read_html(url0)
link.next<-web %>% html_nodes(‘div.p_in li.bk a’) %>% html_attrs()
return(link.next)
}
#將函數封裝起來
download_data<-function(url)
{
#讀取網頁信息
web<-read_html(url0)
#獲取工作名稱
title<-web %>% html_nodes(‘div.el p.t1 span’) %>% html_text()
#去除title中的空格和換行符,只保留文字
title_extr<-function(x){return(str_extract(x,’[^\r\n| ]+’))}
title<-title_extr(title)
#獲取公司名
company<-web %>% html_nodes(‘div.el span.t2’) %>% html_text()
#去除第一行“公司名”,使company的行數與title的行數一致
company<-company[2:length(company)]
#獲取工作地點
location<-web %>% html_nodes(‘div.el span.t3’) %>% html_text()
location<-location[2:length(location)]
#獲取工資
salary<-web %>% html_nodes(‘div.el span.t4’) %>% html_text()
salary<-salary[2:length(salary)]
#獲取發佈時間
Time<-web %>% html_nodes(‘div.el span.t5’) %>% html_text()
Time<-Time[2:length(Time)]
return(data.frame(title,company,location,salary,Time))
}
link[[1]]<-(url0)#獲取第一個網址
for(i in 2:5)
{
link[[i]]<-download_url(link[[i-1]])#獲取2:5的網址
}
for(i in c(1:5))
{
if(i==1)
data<-download_data(link[i])#獲取每一個頁面的數據
else
#data裏面有數據了,就可以直接進行數據框的拼接
data<-rbind(data,download_data(link[[i]]))
}
names(data)<-c(“工作名稱”,”公司名”,”工作地點”,”工資”,”發佈時間”)#對數據的表頭重命名
write.csv(data,file=”F:/R語言爬蟲/zhaopin1.csv”)#將數據讀入csv文件
如圖:
這裏寫圖片描述

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