如何用rvest包爬取豆瓣图书250的数据

本文展示了如何利用R的rvest包爬取豆瓣Top250图书的书名、评分、作者、译者、出版社、出版时间和价格等信息,并对出版社和出版时间进行了统计分析,揭示了出版社出版好书的分布以及好书出版的时间规律。
摘要由CSDN通过智能技术生成

内容概括:用R中的rvest爬取豆瓣top250图书的基本信息(包括书名、评分、作者、译者、出版社、出版时间已经价格),然后根据出版社和出版时间进行进一步的分析


R代码:

#加载所需的包

library("rvest");

library("dplyr");

library("stringr");

#批量爬取豆瓣图书top250数据

ind <-c(0,25,50,75,100,125,150,175,200,225)

book_inf <-data.frame()

#使用for循环进行批量数据爬取(发现url的规律,写for循环语句)

for (i in1:length(ind)){

web<-read_html(str_c("https://book.douban.com/top250?start=",ind[i]),encoding="UTF-8")

#爬取图书的作者、出版社、出版时间、价格

p <-web%>%html_nodes("p.pl")%>%html_text()

#爬取图书的name

q <-web%>%html_nodes(".pl2 a")%>%html_text()

#爬取图书的rate

r <- web%>%html_nodes(".rating_nums")%>%html_text()

#消除q中的空格

q <-str_replace_all(q," ","")

q <-str_replace_all(q,"\n","")

#赋值图书书名和评分

name <- q

rate <- r

#对p进行处理

#提取作者名字

p1 <-str_split_fixed(p,"/",2)

author <- p1[,1];

#提取翻译者名字

p2 <-str_split_fixed(p1[,2],"/",2)

a <-str_detect(p2[,1],"出版")

b <- str_detect(p2[,1],"书店")

interpre <-p2[,1]

interpre[a|b] <-"NA"

#提取出版商

p3 <-str_split_fixed(p2[,2],"/",2)

publisher <-p3[,1]

publisher[a] <-p2[a,1]

publisher[b] <-p2[b,1]

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
爬取豆瓣读书Top250数据通常涉及网络爬虫技术,这是一个常见的数据抓取和数据分析项目。以下是大致的步骤: 1. **明确目标**:首先,你需要访问豆瓣读书Top250的页面(https://book.douban.com/top250/)以确定数据结构。 2. **分析网页结构**:查看网页源代码或使用开发者工具检查数据是如何呈现的。可能含HTML、JSON或API接口。 3. **选择爬取方法**: - 如果是直接从HTML获取,可能需要使用如Python的BeautifulSoup或Scrapy等库来解析网页。 - 如果网站提供了API,那么使用API会更方便,但要确保遵循其使用规定,可能需要注册应用或处理OAuth授权。 4. **编写爬虫脚本**:使用Python的requests库发送HTTP请求,然后处理返回的HTML或API响应。对于爬取数据,通常需要解析title、作者、评分、简介等信息。 5. **数据存储**:将抓取到的数据保存到文件(如CSV、JSON或数据库)中,方便后续分析。 6. **异常处理和反爬策略**:注意可能遇到的验证码、动态加载、速率限制等问题,可能需要设置延时、代理或使用Selenium等工具模拟浏览器行为。 7. **合法性**:在进行爬取之前,确保你的行为符合网站的使用政策,尊重版权并避免对服务器造成过度压力。 **相关问题--:** 1. 豆瓣读书的API接口可用吗?如果可用,如何使用? 2. 如何处理HTML中的JavaScript数据,如果数据不在静态HTML里? 3. 为了防止被豆瓣封禁,应该如何合理设置爬虫的频率和策略?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值