当当网书籍信息爬虫
1.基本理论
1.1概念体系
网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以按照我们设置的规则自动化爬取网络上的信息,这些规则被称为爬虫算法。是一种自动化程序,用于从互联网上抓取数据。爬虫通过模拟浏览器的行为,访问网页并提取信息。这些信息可以是结构化的数据(如表格数据),也可以是非结构化的文本。爬虫任务的执行流程通常包括发送HTTP请求、解析HTML文档、提取所需数据等步骤。
1.2技术体系
1请求库:用于向目标网站发送HTTP请求。常用的请求库包括requests、httplib、urllib等。这些库可以帮助我们模拟浏览器行为,发送GET、POST等请求,并处理响应内容。
2.解析库:用于解析HTML或XML文档,提取出我们需要的数据。常用的解析库包括BeautifulSoup、lxml、pyquery等。这些库可以帮助我们根据HTML文档的结构和标签,提取出我们需要的数据。
3.存储库:用于将爬取到的数据存储到本地或数据库中。常用的存储库包括sqlite3、mysql-connector-python、pymongo等。这些库可以帮助我们将数据存储到关系型数据库或非关系型数据库中,以便后续分析和利用。
2.代码编写流程

代码编写流程
代码共分为3部分,1网页地址规律函数。2网页数据解析,3数据存储。
2.1.网页地址规律

第一页
网页地址图书畅销榜-近24小时畅销书排行榜-当当畅销图书排行榜

第二页
网页地址第2页_图书畅销榜-近24小时畅销书排行榜-当当畅销图书排行榜
对上面地址分析,发现地址中后面数字发生改变,第一页位数为1,第二页位数为2
依次类推。
编写翻页函数

函数中number为页面地址位数
2.2.页面解析

2.3.网页数据保存
·
3.应用举例

该代码对获取数据进行列表切片处理,由于爬虫数据都是字符串数据,对排名,评论数,转化为整数型数据,推荐数转化为浮点型数据,

网页存在些书籍无电子书价格,编写函数处理该问题,对电子书:字段进行查询,无该字段返回-1,
4.编写代码
import requests
from openpyxl import Workbook,load_workbook
import requests
from bs4 import BeautifulSoup
import os
### 网页请求函数
def wy(number):res=requests.get(url='http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-{}'.format(number))res.encoding = res.apparent_encoding#解决网页乱码问题return res.text
## 网页书籍解析部分
def shuj(number):soup = BeautifulSoup(wy(number), 'html.parser')f1=soup.find('ul',attrs={'class':"bang_list clearfix bang_list_mode"})f2=f1.find_all('li')shuj_list=[]## 数据存放列表for i in f2:#shuj1=i.find('div',attrs={'class':"list_num red"})shuj1=i.text.split("\n")print(shuj1)#shuj_list.append(list(filter(None, shuj1)))shuj_list.append(chuli(list(filter(None, shuj1))))#print(shuj1)return shuj_list#print(f)
## 数据处理函数
def chuli(shuj_list):print(shuj_list)shuru_list=[]## 转化数据存储格式列表try:shuru_list.append(int(shuj_list[0].replace('.','')))# 排名 # int函数转化书籍类型,字符串转化为整数shuru_list.append(shuj_list[1].replace('...', ''))# 书名shuru_list.append(int(shuj_list[2].split("条评论")[0]))# 评论数shuru_list.append(float(shuj_list[2].split("条评论")[1][:-2].replace('%',''))) # 推荐数shuru_list.append(shuj_list[3].split(" 著;")[0]) #作者shuru_list.append(shuj_list[4].split("\xa0")[0]) ## 出版时间print(shuj_list[4])shuru_list.append(shuj_list[4].split("\xa0")[1])# 出版社shuru_list.append(shuj_list[5])# 价格shuru_list.append(shuj_list[6].replace("\r",''))## 原价shuru_list.append(shuj_list[7].replace("\r",'').replace(' ','')) # 折数shuru_list.append(dzjiage(shuj_list[9]))# 电子书价格except:passreturn shuru_list
## 处理网页中无电子书价格函数
def dzjiage(x):if x.find("电子书:")==-1:k="无数据"else:k=x.replace("电子书:",'')return k
## 写入excel表类函数
class Excel_write():def __init__(self):self.excel_file = "当当网书籍信息.xlsx"if not os.path.exists(self.excel_file):self.wk = Workbook();#创建excel工作薄self.wk.create_sheet("书籍信息",0);#sheet表名,位置(从0开始)# 默认选择当前活跃选项卡self.wb =self.wk['书籍信息']self.wb.append(['排名','书名','评论数','推荐数','作者','出版时间','出版社','价格','原价','折数','电子书价格']);#横向插入数据self.wk.save(self.excel_file)self.wk_load = load_workbook(filename=self.excel_file)self.wb_load = self.wk_load['书籍信息']def nr1(self,number):shuj_list1=shuj(number)## 循环爬取到的数据for i in shuj_list1:self.wb_load.append(i)## 写入数据self.wk_load.save(filename=self.excel_file)## 数据保存if __name__=="__main__":for number in range(1,26):# number为网页的页数Excel_write().nr1(number)
5.运行结果


相关文章:
当当网书籍信息爬虫
1.基本理论 1.1概念体系 网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以按照我们设置的规则自动化爬取网络上的信息,这些规则被称为爬虫算法。是一种自动化程序,用于从互联网上抓取数据。爬虫通过模拟浏览器的行为,访问网页…...
React实现拖拽特效
前言 最近,我看到一个工程师的个人网站上,采用了拖拽作品集的互动特效,既有趣又吸引眼球。经过一些研究,我发现其实借助一些现成的套件,就能轻松实现这样的效果。今天就带大家一起看看,如何通过 Framer Mo…...
【竞技宝】LOL:ning直播再次锐评
北京时间1月18日,目前英雄联盟LPL2025正在如火如荼的进行之中,很多队伍都已经打完了新赛季的首场比赛,其中就包括AL战队,AL在休赛期进行了大幅度的人员调整,整体实力相比之前增强了不少,在16日的比赛中,AL3-0轻松击败LGD拿下了赛季开门红,而AL的打野选手tarzan在本场比赛中表现…...
ThreeJS能力演示——界面点选交互能力
1、支持界面点选 点选模型整体思路是:根据camera位置作为起始点,叠加鼠标相对位置作为偏置,摄像头方向作为射线方向。 根据射线方向中的遇到的3D物体列表,第一个遇到的物体作为被点选的物体。 // 鼠标事件处理let selectedObjec…...
flutter的web页面
有几个服务器 有几个后台 直接通过web端进去虽然说很方便,但… 于是把web页面镶嵌到应用里面去, 这样就换了个方式打开web页面了 比如这里有有个列表 这里是写死了,活的列表可以通过io去获取 import package:flutter/material.dart; imp…...
2025.1.17——三、SQLi regexp正则表达式|
题目来源:buuctf [NCTF2019]SQLi1 目录 一、打开靶机,整理信息 二、解题思路 step 1:正常注入 step 2:弄清关键字黑名单 1.目录扫描 2.bp爆破 step 3:根据过滤名单构造payload step 4:regexp正则注…...
虚幻基础2:gameplay框架
能帮到你的话,就给个赞吧 😘 文章目录 ue框架:gameplay组成game modeactorcomponent player controllergame state 工作流程 ue框架:gameplay 组成 game mode 游戏类型和规则。可以控制游戏的开始与结束以及一些其他功能。 ac…...
使用 Go 语言生成样式美观的 PDF 文件
文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...
鸿蒙-点击Notification通知并打开App的具体页面
意图通知 获取router事件中传递参数并跳转 目前点击通知消息打开应用的指定页面,通过为通知添加行为意图的方式。也就是在wants的parameters中设置自定义参数,然后在UIAbility的onNewWant或者onCreate方法中 解析配置的自定义参数信息判断跳转不同页面&a…...
非科班转码第5年零241天
文章目录 非科班转码第5年零241天第一份工作鸭梨山大同事的帮助第二份工作新公司学到很多出海计划 非科班转码第5年零241天 第一份工作 2019年5月24日,我从机械工程转码后找到第一份工作——图像算法工程师,能得到这份工作纯属偶然,当时公司…...
数据库:MongoDB命令行帮助解释
MongoDB命令: mongodmongosmongoperrormongoexportmongofilesmongoimportmongorestoreMongostat MongoDB包中的核心组件包括: mongod 是 MongoDB 的核心服务器进程,负责数据存储和管理。mongos 是分片集群的路由进程,负责将请求路由到正确…...
MongoDB单机版安装
MongoDB单机版安装 在CentOS Linux release 7.9.2009 (Core)下安装MongoDB的步骤如下: 1 创建用户和组(可选,根据需要) 如果您希望以非root用户运行MongoDB服务,可以创建一个专用的用户和组。 groupadd mongodb us…...
Azure面试
文章目录 项目地址一、Azure Storage1. What are the benefits of Azure Storage? 二、汇总 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的框架和插件: dbt airflow一、Azure Storage 1. What are the bene…...
在.NET用C#将Word文档转换为HTML格式
将Word文档转换为HTML格式尤其具有显著的优势,它不仅能够确保文档内容在多种设备和平台上保持一致灵活的显示,还便于通过网络进行传播和集成到各种Web应用中。随着越来越多的企业和开发者寻求更灵活、更具兼容性的文件处理方式,.NET框架下的C…...
macOS 安装JDK17
文章目录 前言介绍新特性下载安装1.下载完成后打开downloads 双击进行安装2.配置环境变量3.测试快速切换JDK 小结 前言 近期找开源软件,发现很多都已经使用JDK17springboot3 了,之前的JDK8已经被替换下场,所以今天就在本机安装了JDK17&#…...
Django SimpleUI 自定义功能实战
1. 引言 Django SimpleUI 是一个基于 Django 的后台管理界面美化工具,旨在帮助开发者快速构建现代化的后台管理系统。除了默认的功能外,SimpleUI 还支持高度自定义,开发者可以根据需求添加各种实用功能。本文将详细介绍如何在 Django SimpleUI 中实现自定义功能,包括数据同…...
C语言/C++自然序列重排列——相邻序号不相邻问题⭐
同类题目:C语言自然序列重排——相邻元素的差值集合恰好有 k 个不同的值。⭐⭐-CSDN博客 题目描述(难度⭐) 一场针对 n 学生的考试将在一个又长又窄的房间里举行,因此学生们将按某种顺序排成一行。老师怀疑相邻编号的学生…...
Spring boot面试题---- Spring boot项目运行原理
1.启动流程概述 Spring Boot 的启动是从一个带有main方法的主类开始的。这个主类通常会有一个@SpringBootApplication注解。这个注解是一个组合注解,它包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。@Configuration注解表明这个类是一个配置类,它可以定义…...
Qt/C++ 基于 QGraphicsView 的绘图软件 (附源码下载链接)
基于 Qt 的 QGraphicsView 绘图软件项目进行深入讲解,分析其核心代码与功能实现,帮助开发者理解 QGraphicsView 的用法。 项目概览 该项目实现了一个简单的绘图应用,用户可以在界面中创建和编辑矩形、椭圆、直线、多边形和文本等图形对象。功…...
如何使用 useMemo 和 memo 优化 React 应用性能?
使用 useMemo 和 memo 优化 React 应用性能 在构建复杂的 React 应用时,性能优化是确保应用流畅运行的关键。React 提供了多种工具来帮助开发者优化组件的渲染和计算逻辑,其中 useMemo 和 memo 是两个非常有用的 Hook。本文将详细介绍这两个工具的使用方…...
FastAPI 2.0流式AI接口上线前必须做的4项压力测试:QPS突破1200+的实测阈值与熔断配置清单
第一章:FastAPI 2.0流式AI接口压力测试全景认知FastAPI 2.0 引入了对异步流式响应(如 StreamingResponse)的深度优化,使大语言模型(LLM)类接口可原生支持 Server-Sent Events(SSE)、…...
BEYOND REALITY Z-Image避坑指南:解决生成图片模糊、全黑的常见问题
BEYOND REALITY Z-Image避坑指南:解决生成图片模糊、全黑的常见问题 1. 为什么你的Z-Image生成效果不理想? 当你第一次使用BEYOND REALITY Z-Image时,可能会遇到这样的困扰:明明输入了详细的提示词,生成的图片却要么…...
Android tinyalsa深度解析之pcm_params_get_periods_min调用流程与实战(一百七十三)
简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…...
PDF-Parser-1.0行业报告:市场分析与技术趋势
PDF-Parser-1.0行业报告:市场分析与技术趋势 1. 引言 每天都有成千上万份行业报告、白皮书和研究文档以PDF格式在企业间流转。这些文档蕴含着宝贵的市场洞察、技术趋势和商业机会,但手动提取和分析这些信息需要耗费大量时间和精力。PDF-Parser-1.0的出…...
基于SpringBoot的CLAP音频分类服务开发实战
基于SpringBoot的CLAP音频分类服务开发实战 1. 项目背景与价值 音频分类在实际业务中有着广泛的应用场景,比如内容审核、智能家居、媒体分析等。传统的音频分类方案通常需要大量标注数据来训练专用模型,这在很多实际场景中成本高昂且不够灵活。 CLAP&…...
BubbleRAG:破局黑盒图谱,召回精确率双杀
LLMs 在知识密集型任务中普遍存在幻觉问题,且训练数据的静态性导致知识过时。 RAG 通过引入外部知识缓解这一问题,其中基于知识图谱(KG)的RAG能显式建模跨文档依赖,支持结构化推理。然而,现有方法在黑盒知识…...
pngquant终极错误排查手册:10个常见问题与快速解决方案
pngquant终极错误排查手册:10个常见问题与快速解决方案 【免费下载链接】pngquant Lossy PNG compressor — pngquant command based on libimagequant library 项目地址: https://gitcode.com/gh_mirrors/pn/pngquant pngquant作为一款高效的PNG有损压缩工具…...
4个关键步骤:开源散热控制解决Dell G15温度难题
4个关键步骤:开源散热控制解决Dell G15温度难题 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 在游戏本使用过程中,散热控制往往是影响…...
告别校园网登录页!实测用UDP 53端口“曲线救国”上网的几种姿势与风险提示
校园网络优化:提升连接效率的合法实践指南 校园网络作为师生日常学习研究的重要基础设施,其稳定性和访问效率直接影响教学科研质量。许多用户在使用过程中会遇到认证页面频繁弹出、连接不稳定等问题,这通常与网络架构设计和流量管理策略有关。…...
用MQTT协议玩转OneNet物联网:STM32F103+ESP8266实现温湿度监控(附心跳包优化技巧)
STM32F103与ESP8266的物联网实战:MQTT协议深度优化与温湿度监控系统设计 1. 资源受限环境下的物联网通信架构设计 在嵌入式物联网设备开发中,资源优化始终是核心挑战。STM32F103C8T6作为经典的Cortex-M3内核微控制器,仅有64KB Flash和20KB RA…...
