【Python实战】爬虫教程千千万,一到实战全完蛋?今天手把手教你一键采集某网站图书信息数据啦~排名第一的竟是...(爬虫+数据可视化)

news2024/11/24 2:12:38

前言

​一本本书,是一扇扇窗,为追求知识的人打开认知世界的窗口

一本本书,是一双双翅膀,让追求理想的人张开翅膀翱翔

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

前面写了一篇文章关于爬虫的系列内容一步一步教大家写一个完整的GUI小说下载神器。

这一期想给大家趴一趴外甥女想买的书籍,因为前几天学校让买课外书籍,这不?

网上的书籍太多了,想让我参考一下,正好今天有时间研究了一下,直接批量下载了一些,看

看那些评论好,对比一下再买!

今天就给大家一步步分析一下是我是如何爬取数据,采集某网站的书籍并做一个数据分析滴~

正文

一、准备环境

 1)环境安装

本文用到的环境如下—— 

 Python3、Pycharm社区版,requests、parsel、自带的库只 要安装完 Python就可 以直接使

用了, 需要安装 的库的话看教程下🎐

一般安装:pip install +模块名 

 镜像源安装:pip install -i https://pypi.douban.com/simple/+模块名 

 (之前有说过安装报错的几种方式跟解决方法,不会安装的可以去看下,还有很多国内镜像源 

 也有文章的)

二、安装问题

何配置pycharm里面的python解释器? 

 1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器) 。

 2. 点击齿轮, 选择add 。

 3. 添加python安装路径 。

pycharm如何安装插件? 

1. 选择file(文件) >>> setting(设置) >>> Plugins(插件) 。

 2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输

入 Chinese 。

 3. 选择相应的插件点击 install(安装) 即可 。

 4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效。

三、数据来源分析 

 1. 明确需求: - 采集的网站是什么?

http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1 - 

采集的数据是什么? 书籍相关的数据内容: 名字/价格/评价/推荐/作者.... 

 2. 分析书籍信息在那个数据包

<请求那个url地址>里面 通过开发者工具进行抓包分析 。

 - 打开开发者工具: F12 / 鼠标右键点击检查选择network 

刷新网页: 让网页数据内容重新加载一遍 <F5/ctrl+R> 

 搜索功能: 通过关键字<你要的数据>去搜索查询相对应的数据包 。

 由上述可得: 请求这个: http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-

recent7-0-0-1-1 就可以得到相应书籍信息。

四、代码展示

1)主程序

# 导入数据请求模块 --> 第三方模块 需要安装 pip install requests
import requests  # 灰色不是报错, 而是导入模块没有使用
# 导入数据解析模块 --> 第三方模块 需要安装 pip install parsel
import parsel
# 导入csv表格模块 --> 内置模块, 不需要安装
import csv

# 创建文件对象
"""
data.csv <文件名> 代码在哪里就保存在哪里
mode='a' 保存方式, 追加保存
encoding='utf-8' 编码格式
newline='' 换行
f --> 文件对象
fieldnames --> 字段名, 表头
如何批量替换:
    1. 选择替换内容 ctrl + R 
    2. 勾选上 .* <正则>
    3. 输入正则命令
        :.*
        ,
"""
f = open('data.csv', mode='a', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '评论',
    '推荐',
    '作者',
    '时间',
    '出版社',
    '售价',
    '原价',
    '折扣',
    '电子书',
    '详情页',
])
# 写入表头
csv_writer.writeheader()
"""
1. 发送请求, 模拟浏览器对于url地址发送请求
    - 安装模块
        1. win + R 输入cmd 输入安装命令
        2. 点击pycharm终端, 输入安装命令
        如果觉得安装速度太慢可以换源
    - 把python代码伪装成浏览器去发送请求
        headers请求头 --> 字典数据类型, 要构建完整键值对
    - 自定义变量
        不以数字开头, 不建议用关键字命名
        其他你喜欢就好
        
多页的数据采集 --> 分析请求链接变化规律
    第一页: http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1
    第二页: http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-2
    第三页: http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-3
    
    
"""
for page in range(1, 26):
    # 包含1 但是不包含26
    # 请求链接
    url = f'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-{page}'
    # 伪装模拟 --> 70%左右网站加User-Agent 就可以了, 如果不行, 你加其他 cookie host referer
    headers = {
        # User-Agent 用户代理, 表示浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 发送请求
    # 调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量response接收返回数据
    response = requests.get(url=url, headers=headers)
    """
    2. 获取数据, 获取服务器返回响应数据
        开发者工具: response <网页源代码>
        response<响应对象>.text<文本> --> 获取响应的文本数据 <html字符串数据类型>
    3. 解析数据, 提取我们想要的数据内容
        - 书籍基本信息
    解析方法:
        re正则 --> 对于字符串数据直接进行解析提取
        css选择器 --> 根据标签属性内容提取数据 
        xpath --> 根据标签节点提取数据
        
    早退是没有资料没有录播, 课后会签到, 找助理老师获取录播 代码也可以
    
    分两次提取:
        - 第一次提取所有书籍信息
        - 第二次提取具体每一本书籍内容
    """
    # 把获取下来html字符串数据<response.text>, 转换成可解析对象
    selector = parsel.Selector(response.text)  # <Selector xpath=None data='<html xmlns="http://www.w3.org/1999/x...'>
    # 提取所有li标签 --> 会复制就可以了
    lis = selector.css('.bang_list_mode li')  # --> 返回列表, 列表里面元素是Selector对象 lis[0] 索引取值, 提取第一个元素
    # 把列表里面元素一个一个提取出来 --> for循环遍历
    for li in lis:
        """
        .name a --> 定位一个class类名为name下面a标签
        a::attr(title) --> 获取a标签里面title属性
        attr() --> 获取属性
        get() --> 获取第一个标签数据, 返回字符串数据类型
        .tuijian::text --> 获取文本
        div:nth-child(6) --> 第6个div标签
        css选择器/xpath/re 在系统课程里面 三节课, 7.5个小时才讲完 --> 理论+案例
        跟着老师系统学, 有问题随便问, 知识也会教
        """
        title = li.css('.name a::attr(title)').get()  # 提取标题
        comment = li.css('.star a::text').get()  # 提取评论
        recommend = li.css('.tuijian::text').get()  # 提取推荐
        author = li.css('.publisher_info a::attr(title)').get()  # 提取作者
        date = li.css('.publisher_info span::text').get()  # 时间
        press = li.css('div:nth-child(6) a::text').get()  # 出版社
        price_n = li.css('.price .price_::text').get()  # 售价
        price_r = li.css('.price .price_r::text').get()  # 原价
        price_s = li.css('.price .price_s::text').get()  # 折扣
        price_e = li.css('.price_e .price_n::text').get()  # 电子书
        href = li.css('.name a::attr(href)').get()  # 详情页
        # 以字典方式保存数据
        dit = {
            '标题': title,
            '评论': comment,
            '推荐': recommend,
            '作者': author,
            '时间': date,
            '出版社': press,
            '售价': price_n,
            '原价': price_r,
            '折扣': price_s,
            '电子书': price_e,
            '详情页': href,
        }
        # 写入数据
        csv_writer.writerow(dit)
        print(title, comment, recommend, author, date, press, price_n, price_r, price_s, price_e, href)

2)效果展示

爬取数据——

​保存到表格——

数据可视化——

可视化的代码很多这里就不一一展示了。

总结

好啦!今天的文章内容写到这里就结束了哈,想学习的可以找我啦~

✨完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~

 🔨推荐往期文章——

项目0.9  【Python实战】WIFI密码小工具,甩万能钥匙十条街,WIFI任意连哦~(附源码)

项目1.0  【Python实战】再分享一款商品秒杀小工具,我已经把压箱底的宝贝拿出来啦~

项目0.7  【Python爬虫实战】 不生产小说,只做网站的搬运工,太牛逼了~(附源码)

项目0.8  【Python抢票神器】火车票枪票软件到底靠谱吗?实测—终极攻略。

项目1.2

【Python实战】如果没有音乐,生活就是一个错误 :n首回味无穷的歌,总有一曲深得你心哦~

项目1.3 

【Python实战】美哭你的极品壁纸推荐|1800+壁纸自动换?美女动漫随心选(高清无码)

🎁文章汇总——

Python文章合集 | (入门到实战、游戏、Turtle、案例等)

(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)

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

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

相关文章

机器学习的特征归一化Normalization

为什么需要做归一化&#xff1f; 为了消除数据特征之间的量纲影响&#xff0c;就需要对特征进行归一化处理&#xff0c;使得不同指标之间具有可比性。对特征归一化可以将所有特征都统一到一个大致相同的数值区间内。 为了后⾯数据处理的⽅便&#xff0c;归⼀化可以避免⼀些不…

Pycharm和跳板机 连接内网服务器

Pycharm和跳板机 连接内网服务器 建立配置文件 本地配置 .ssh 文件夹下配置 config 文件 Host jumpHostName xxxPort 22User xxxServerAliveInterval 30IdentityFile C:\Users\15284\.ssh\id_rsa # 通过密钥连接Host server # 同样&#xff0c;任意名字&#xff0c;随…

vxe自定义表头设置+前端本地数据存储

业务要求 支持拖动排序&#xff0c;按现有内容排序支持显示/隐藏&#xff0c;默认全部显示列表增加顶部格线&#xff0c;用户可以自己调整列宽设置内容仅对该账号有效&#xff0c;前端存储 最终实现的效果图 哪些改动 静态表格改动态表格 table > grid vxe-grid 高级表格…

一文深度解读音视频行业技术发展历程

从1948年的香农定律&#xff0c;到音视频的今天。IMMENSE、36氪&#xff5c;作者 北京时间2月28日凌晨&#xff0c;FIFA年度颁奖典礼在巴黎举行。梅西荣膺年度最佳球员&#xff0c;斯卡洛尼当选年度最佳男足主帅&#xff0c;马丁内斯荣获年度最佳男足门将&#xff01;阿根廷因…

自动售卖机的类型和工作流程分析

线上经济的崛起提高了人们的生活品质&#xff0c;促进了我国市场经济的发展。随着互联网的快速发展&#xff0c;线上经济资源已经饱和&#xff0c;线上和线下资源整合已经成为市场经济发展的方向&#xff0c;而自动售卖机正是线上和线下经济发展的连接纽带。 自动售卖机作为无人…

3.查找算法:顺序查找和二分查找

查找查找&#xff0c;是指在一些数据元素中&#xff0c;通过一定的方法找出与给定关键字相同的数据元素的过程。列表查找&#xff08;线性表查找&#xff09;&#xff1a;从列表中查找指定元素输入&#xff1a;列表&#xff0c;待查找元素输出&#xff1a;元素下标&#xff08;…

多线程 随便起的

进程&#xff1a;进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体&#xff0c;每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构如果想让-一个进程访问另一个进程的资源&#xff0c;需要使用进程间通信&#xff0c;比如管道&#xff…

LAMP项目部署实战1

一、说明&#xff1a; LAMP&#xff1a;Linux Apache MySQL PHP Apache&#xff1a; Apache是世界使用排名第一的Web服务器软件。主要用于接收用户的请求&#xff0c;处理业务逻辑&#xff0c;返回结果给客户端&#xff08;浏览器&#xff09;。 PHP&#xff1a;一种专门…

SQL 层功能改进 - lookupJoin 的优化

一、传统 join 算法lookupJoin 是 join 查询的一种&#xff0c;传统 join 算法为&#xff1a;1. 遍历 A 表&#xff0c;读取一条数据 r2. 遍历 B 表&#xff0c;对于每条数据&#xff0c;与 r 进行 join 操作3. 重复 1、2 操作&#xff0c;直到 A 表遍历完所有数据二、lookupJo…

在 WIndows 下安装 Apache Tinkerpop (Gremlin)

一、安装 JDK 首先安装 Java JDK&#xff0c;这个去官网下载即可&#xff0c;我下载安装的 JDK19&#xff08;jdk-19_windows-x64_bin.msi&#xff09;&#xff0c;细节不赘述。 二、去 Tinkerpop 网站下载 Gremlin 网址&#xff1a;https://tinkerpop.apache.org/ 点击下面…

用cpolar发布本地的论坛网站 1

网页论坛向来是个很神奇的地方&#xff0c;曾经的天涯论坛和各种BBS&#xff0c;大家聚在在一起讨论某个问题&#xff0c;也能通过论坛发布想法&#xff0c;各种思维碰撞在一起&#xff0c;发生很多有趣的故事&#xff0c;也产生了很多流传一时的流行语录。当然&#xff0c;如果…

推荐5款免费无广告的精品软件

检查一下你最近安装的软件&#xff0c;他们是不是都一样无法避免最终被你打入冷宫的命运&#xff1f;我们明明很懂“在精不在多”的道理&#xff0c;却依然让我们的电脑塞满了形形色色无用的软件。你需要知道的是&#xff0c;如何找到一款适合自己且真正实用的电脑软件。 1.多…

元宇宙营业厅,数字技术融合,赋能实体经济

在我国数字经济与虚拟服务市场规模扩大下&#xff0c;元宇宙营业厅强势来袭&#xff0c;从多场景、多内容&#xff0c;深耕高效协同的特色功能&#xff0c;基于多元化、灵活的交互体验&#xff0c;更大程度上解决线上业务办理抽象繁琐&#xff0c;线下业务办理的时空受限、业务…

4.Spring【Java面试第三季】

4.Spring【Java面试第三季】前言推荐4.Spring27_Aop的题目说明要求Spring的AOP顺序AOP常用注解面试题28_spring4下的aop测试案例业务类新建一个切面类MyAspect并为切面类新增两个注解&#xff1a;spring4springboot1.5.9pom测试类29_spring4下的aop测试结果aop正常顺序异常顺序…

求极限方法总结

1.利用四则运算法则求极限 2.利用两个重要极限求极限 //0除以0型 //1的无穷次方型 3.利用等价无穷小替换替换求极限 //在等价替换时注意和差项 4.利用洛必达法则求极限 5.利用夹逼准则求极限 6.利用单调有界数列极限准则求极限 7.利用无穷小的性质求极限 8.利用函数的连续性…

来面试阿里测开工程师,HR问我未来3-5年规划,我给HR画个大饼。

在面试的过程中是不是经常被面试官问未来几年的职业规划?你会答吗&#xff1f;是不是经常脑袋里一片空白&#xff0c;未来规划&#xff1f;我只是想赚更多的钱啊&#xff0c;哈哈哈&#xff0c;今天我来教大家&#xff0c;如何给面试官画一个大饼&#xff0c;让他吃的不亦乐乎…

MySQL高级第二讲

目录 二、MySQL高级02 2.1 触发器 2.1.1 触发器介绍 2.1.2 创建触发器 2.2 MySQL的体系结构 2.3 存储引擎 2.3.1 存储引擎概述 2.3.2 各种存储引擎特性 2.3.3 InnoDB 2.3.4 MyISAM 2.3.5 MEMORY 2.3.6 MERGE 2.3.7 存储引擎的选择 2.4 优化sql 2.4.1 查看sql执行…

二分查找重复情况 找最左边或最右边的位置下标

目录二分找最左边二分找最右边综合应用(剑指offer)二分找最左边 核心思想: 先mid (lr)/2每次向左取整; 然后命中target的时候&#xff0c;右边界逼近到mid; 因为每次mid向左取整&#xff0c;mid命中target时l代替mid位置&#xff0c;则循环迭代最后会卡出重复数字最左侧的位置…

糖化学试剂55520-67-7,5-vinyl-2-deoxyuridine,5-乙烯基-2-脱氧尿苷特点分析说明

5-vinyl-2-deoxyuridine(5-VdU)&#xff0c;5-vinyl-2-deoxyuridine&#xff0c;5-Vinyldeoxyuridine5-乙烯基-2-脱氧尿苷 | CAS&#xff1a;55520-67-7 | 纯度&#xff1a;95%试剂信息&#xff1a;CAS&#xff1a;55520-67-7所属类别&#xff1a;糖化学分子量&#xff1a;C11H…

信息系统基本知识(一)

1.1 信息系统与信息化 信息论已发展成为一个内涵非常丰富的学科&#xff0c;与控制论和系统论并称为现代科学的“三论” 1.1.1 信息的基本概念 香农指出&#xff1a;信息是能够用来消除不确定性的东西。信息量的单位&#xff1a;比特 信息的特征 客观性&#xff1a;信息是…