【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

news2024/11/19 3:16:04

文章目录

  • 一、爬虫对象-豆瓣读书TOP250
  • 二、python爬虫代码讲解
  • 三、讲解视频
  • 四、完整源码

一、爬虫对象-豆瓣读书TOP250

您好,我是 @马哥python说 ,一名10年程序猿。

今天我们分享一期python爬虫案例讲解。爬取对象是,豆瓣读书TOP250排行榜数据:
https://book.douban.com/top250豆瓣读书250页面

开发好python爬虫代码后,爬取成功后的csv数据,如下:
部分爬取结果

代码是怎样实现的爬取呢?下面逐一讲解python实现。

二、python爬虫代码讲解

首先,导入需要用到的库:

import requests  # 发送请求
from bs4 import BeautifulSoup  # 解析网页
import pandas as pd  # 存取csv
from time import sleep  # 等待时间

然后,向豆瓣读书网页发送请求:

res = requests.get(url, headers=headers)

利用BeautifulSoup库解析响应页面:

soup = BeautifulSoup(res.text, 'html.parser')

用BeautifulSoup的select函数,(css解析的方法)编写代码逻辑,部分核心代码:

name = book.select('.pl2 a')[0]['title']  # 书名
book_name.append(name)
bkurl = book.select('.pl2 a')[0]['href']  # 书籍链接
book_url.append(bkurl)
star = book.select('.rating_nums')[0].text  # 书籍评分
book_star.append(star)
star_people = book.select('.pl')[1].text  # 评分人数
star_people = star_people.strip().replace(' ', '').replace('人评价', '').replace('(\n', '').replace('\n)',
                                                                                                 '')  # 数据清洗
book_star_people.append(star_people)

最后,将爬取到的数据保存到csv文件中:

def save_to_csv(csv_name):
	"""
	数据保存到csv
	:return: None
	"""
	df = pd.DataFrame()  # 初始化一个DataFrame对象
	df['书名'] = book_name
	df['豆瓣链接'] = book_url
	df['作者'] = book_author
	df['译者'] = book_translater
	df['出版社'] = book_publisher
	df['出版日期'] = book_pub_year
	df['价格'] = book_price
	df['评分'] = book_star
	df['评分人数'] = book_star_people
	df['一句话评价'] = book_comment
	df.to_csv(csv_name, encoding='utf8')  # 将数据保存到csv文件

其中,把各个list赋值为DataFrame的各个列,就把list数据转换为了DataFrame数据,然后直接to_csv保存。

这样,爬取的数据就持久化保存下来了。

三、讲解视频

同步讲解视频:【python爬虫案例】利用python爬虫爬取豆瓣读书TOP250的数据!

四、完整源码

附完整源代码:【python爬虫案例】利用python爬虫爬取豆瓣读书TOP250的数据!


我是 @马哥python说 ,持续分享python源码干货中!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/955974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023-08-31 LeetCode每日一题(一个图中连通三元组的最小度数)

2023-08-31每日一题 一、题目编号 1761. 一个图中连通三元组的最小度数二、题目链接 点击跳转到题目位置 三、题目描述 给你一个无向图,整数 n 表示图中节点的数目,edges 数组表示图中的边,其中 edges[i] [ui, vi] ,表示 ui…

暴力递归转动态规划(三)

前两篇暴力递归转动态规划的文章中,都是通过从上到下的一种思路来解决的问题,这篇文章会通过数组从左向右遍历的方式,来将暴力递归转成动态规划。 题目 有两个等长的数组 w[] 和 v[],w[i] 和 v[i] 分别表示 i 号物品的重量和价值…

全球十大安全好用的黄金交易app软件最新排名(综合评测)

随着金融市场的不断发展,黄金交易app软件日益成为投资者不可或缺的工具。然而,面对众多的黄金交易软件,投资者往往感到困惑和难以抉择。本文将根据最新排名,对全球十大安全好用的黄金交易软件进行综合评测,帮助投资者找…

记一次Zip Slip任意文件写漏洞 以及一些参考文章

记一次Zip Slip任意文件写漏洞以及参考文章们 记一次Zip Slip任意文件写漏洞漏洞复现漏洞原理分析扩展延申 参考文章一:Java之解压流(ZipInputStream)参考文章二:Zip Slip VulnerabilityExploitable Application FlowAre you Vuln…

13.10 语义分割 全卷积网络

语义分割是对图像的每个像素分类 全卷积网络采用卷积神经网络实现从图像像素到像素类别的转换,全卷积网络将中间层特征的高和宽转换回输入图像的尺寸(引入转置卷积实现的)。 最终的类别预测与输入图像在像素上一一对应。 全卷积网络模型模型…

day 31 面向对象 成员方法

class 类名称: 类的属类(定义在类中的变量,成员变量) 类的行为(定义在类中的函数,成员方法) # 设计一个类(类比生活中:设计一张等级表) class Student:name Nonegender Nonenatio…

农产品小程序商城搭建宝典

在当今的电子商务时代,农产品小程序商城已经成为了一种新型的电商模式,为许多农产品的生产和销售带来了新的机遇。但是,如何搭建一个功能完善、用户体验优秀的农产品小程序商城呢?下面,我们就来探讨一下。 首先&#x…

抖音电商店铺运营教程,新手开店常见问题解答,醒醒团队分享

我是王路飞。 做抖音小店不可避免会遇到一些问题,尤其是新手,之前没接触过电商,更别说在抖音做电商开店了。 以至于很多新手在抖音开的店铺,类型不太对,类目不太对,不清楚怎么操作和运营,哪哪…

Redis一主一从Docker方式部署通过keepalived和 sentinel哨兵模式实现高可用

有两台服务器一台是主,master : 172.24.69.180 另外一台是从, slave :172.24.69.181 vip 地址: 172.24.69.185 1、关闭防火墙 两台服务器都关闭防火墙 systemctl disable --now firewalld firewall-cmd --state关闭SELinux setenforce 0 …

audio 标签

<audio>标签是HTML5中用于嵌入音频内容的元素。它提供了一种简单的方式来在网页上播放音频文件。 以下是<audio>标签的基本用法&#xff1a; <audio src"路径/到/音频文件.mp3" controls></audio>在上面的示例中&#xff0c;src属性指定了…

Briefings in Bioinformatics投稿经验分享

期刊名: BRIEFINGS IN BIOINFORMATICS期刊名缩写:BRIEF BIOINFORM期刊ISSN:1467-5463E-ISSN:1477-40542023年影响因子/JCR分区:9.5/Q1latex模板:http://static.primary.prod.gcms.the-infra.com/static/site/journals/document/oup-authoring-template.zip?node=7987de4…

langchain介绍之-Prompt

LangChain 是一个基于语言模型开发应用程序的框架。它使得应用程序具备以下特点&#xff1a;1.数据感知&#xff1a;将语言模型与其他数据源连接起来。2.代理性&#xff1a;允许语言模型与其环境进行交互 LangChain 的主要价值在于&#xff1a;组件&#xff1a;用于处理语言模型…

网络编程 day 5

1、根据select TCP服务器流程图编写服务器 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.…

Mysql死锁卡死

查询 show processlist是显示用户正在运行的线程 show processlist;删除卡死的进程id kill 110651;

2023年最新项目追踪工具排行榜发布!

项目跟踪是确保项目顺利交付的重要环节&#xff0c;项目跟踪可以提高团队协作、管理项目风险、控制项目进度。不过对于项目经理而言&#xff0c;如何高效进行项目追踪工作并不是件轻松的工作。 项目跟踪工具的出现&#xff0c;减缓了项目经理的压力&#xff0c;它帮助团队监控…

适配ADRC自抗扰控制算法的MFP450-ADRC 套件焕新而来

关注 FMT 开源自驾仪的开发者可能知道&#xff0c;早在 2018 年 7 月 FMT开源自驾仪的早期版本就已经实现了 ADRC 算法。 经过几年的发展&#xff0c;FMT 在自抗扰控制算法的适配上做了进一步的优化&#xff0c;为了方便科研工作者和开发者快速上手&#xff0c;我们针对搭载 F…

静态代码检查工具PMD安装、使用

介绍 PMD官网&#xff1a;https://pmd.github.io/ 文档&#xff1a;https://docs.pmd-code.org/latest/ https://docs.pmd-code.org/latest/pmd_languages_java.html Java检查规则&#xff1a;https://docs.pmd-code.org/pmd-doc-7.0.0-rc3/pmd_rules_java.html PMD是一款可扩…

掌握这个工具,轻松管理所有物流信息

在电子商务高度发达的今天&#xff0c;物流快递行业在全球范围内发挥着至关重要的作用。然而&#xff0c;在如此复杂的物流环境中&#xff0c;快递退回件的管理和查询成为了一个难题。为了解决这个问题&#xff0c;我们有一个神奇的工具——快递批量查询高手。 快递批量查询高…

OpenGL-入门-BMP像素图glReadPixels(2)保存显示的界面

用glReadPixels保存显示的界面 #include <GL/glut.h> #include <iostream> #include <fstream> #include <vector>// Save pixel data as BMP image void saveBMP(const std::string& filename, int width, int height, const std::vector<GLu…