python转转商超书籍信息爬虫

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.代码编写流程

代码编写流程

代码共分为4部分,1网页数据抓包。2json数据地址规律,3json数据解析,数据存储。

2.1.网页抓包与地址规律

 通过网页抓包,解析到json数据。

加入该网页,红色线框中的数据,是要爬取的数据

网页地址https://app.zhuanzhuan.com/zzopen/sellbook/pcHomePageList?pageNum=1&pageSize=20&cateId2=100&cateId3=100

对网页刷新,发现抓包的数据增加,如下图

Json数据如下

网页地址 https://app.zhuanzhuan.com/zzopen/sellbook/pcHomePageList?pageNum=2&pageSize=20&cateId2=100&cateId3=100

对上面地址分析,发现地址中pageNum数值发生改变,第一页位数为1,第二页位数为2

依次类推。

编写翻页函数

函数中为中pageNum页面地址位数

2.2.页面解析

2.3.网页数据保存

·

3.应用举例

 

输出结果

通过上面代码测试,输出结果为每本书的相关数据,利用json查找语法解析json数据,将书籍书籍写入excel数据表中

4.编写代码

import requests
from openpyxl import Workbook,load_workbook
import os
import jsonpath  
import json
def wy_text(x):res=requests.get(url='https://app.zhuanzhuan.com/zzopen/sellbook/pcHomePageList?pageNum={}&pageSize=20&cateId2=100&cateId3=100'.format(x))sss=json.loads(res.text)return sss
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,text):nr_text=[]p1=jsonpath.jsonpath(text,"$.respData..title")p3=jsonpath.jsonpath(text,"$.respData..publisher")p4=jsonpath.jsonpath(text,"$.respData..pubdate")p5=jsonpath.jsonpath(text,"$.respData")for i in range(len(p1)):nr_text.append([p1[i],p3[i],p4[i],p5[0][i]['sellPrice']/100])return nr_textdef nr_write(self):for i in range(1,40):s=wy_text(i)#类中调用外部函数list=Excel_write().nr1(s)#类中函数相互调用,注意外部或内部self参数都不用加for k in range(len(list)):self.wb_load.append(list[k])self.wk_load.save(filename=self.excel_file)
if __name__=="__main__":
Excel_write().nr_write()

 运行结果

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ext2 文件系统:数字世界的基石,深度解码超时空存储魔法

本篇博主将带大家深入底层探秘系统是如何与磁盘进行相互交流的,配合精美配图,细节讲解来带大家深入探究(注:本篇文章建议了解磁盘内部物理结果组成及设计再进行阅读)。 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C…

postman的使用

Postman是Restful API的测试工具。简单来讲是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大、使用简单。通常无论是开发人员进行接口调试,还是测试人员做接口测试,postman通常都是首选工具。 注:作为开发人员对于…

模块化架构与微服务架构,哪种更适合桌面软件开发?

前言 在现代软件开发中,架构设计扮演着至关重要的角色。两种常见的架构设计方法是模块化架构与微服务架构。它们各自有独特的优势和适用场景,尤其在C#桌面软件开发领域,模块化架构往往更加具有实践性。本文将对这两种架构进行对比&#xff0…

工程上LabVIEW常用的控制算法有哪些

在工程应用中,LabVIEW常用的控制算法有很多,它们广泛应用于自动化、过程控制、机器人、测试测量等领域。以下是一些常见的控制算法: 1. PID 控制 用途:PID(比例-积分-微分)控制是最常用的反馈控制算法&…

nuxt3项目打包部署到服务器后配置端口号和开启https

nuxt3打包后的项目部署相对于一般vite打包的静态文件部署要稍微麻烦一些,还有一个主要的问题是开发环境配置的.env环境变量在打包后部署时获取不到,具体的解决方案可以参考我之前文章 nuxt3项目打包后获取.env设置的环境变量无效的解决办法。 这里使用的…

ui文件转py程序的工具

源博客连接: PyCharm中利用外部工具uic转成的py文件,里面全是C代码,并非python类型的代码,导致大量报错。。。_pyside6-uic为什么把ui转为了c-CSDN博客 如果想把ui文件转为py文件,首先设置pycharm的外部工具&#xf…

c++学习第七天

创作过程中难免有不足&#xff0c;若您发现本文内容有误&#xff0c;恳请不吝赐教。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考。 一、const成员函数 //Date.h#pragma once#include<iostream> using namespace std;class Date { public:Date…

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢&#xff1f; 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分&#xff1a; 4.项目…

Qt中的connect函数

1. 介绍 connect函数是Qobject类提供的静态成员函数&#xff0c;这个Qobject类是Qt中所有类的祖宗类&#xff0c;这个机制类似于JAVE中同样也是有一个Object祖宗类&#xff0c;QWidget类属于Qobject类的子类&#xff0c;所以包括QPushButton这些控件等等&#xff0c;都可以使用…

UE5 开启“Python Remote Execution“

demo 代码 remote_execution.py 远程调用UE5 python代码-CSDN博客 在启用 Unreal Engine 5&#xff08;UE5&#xff09;的“Python 远程执行”功能后&#xff0c;UE5 会启动一个 UDP 组播套接字服务&#xff0c;以监听来自外部应用程序的 Python 命令。 具体行为如下&#xf…

LabVIEW太赫兹二维扫描成像系统

使用LabVIEW设计太赫兹二维扫描成像系统。通过LabVIEW平台开发&#xff0c;结合硬件如太赫兹源、平移台、锁相放大器等&#xff0c;实现了高效、精准的成像功能。系统采用蛇形扫描方式&#xff0c;通过动态调整扫描参数&#xff0c;达到优化成像质量的目的。 ​ 项目背景 在非…

【wiki知识库】08.添加用户登录功能--后端SpringBoot部分

目录 一、今日目标? 二、SpringBoot后端实现 2.1 新增UserLoginParam 2.2 修改UserController 2.3 UserServiceImpl代码 2.4 创建用户上下文工具类 2.5?通过token校验用户&#xff08;重要&#xff09; 2.6 创建WebMvcConfig 2.7 用户权限校验拦截器 一、今日目标 上…

以 RFID 为钥,开启民兵装备管理的科技之门

民兵配备的武器及装备涵盖了各式武器、弹药及军事技术设备&#xff0c;其管理的优良直接决定了民兵的作战效能。鉴于民兵装备普遍面临老化、维护支援不充分等问题&#xff0c;迫切需要迅速建立完善的民兵装备管理新体系。这一转变将推动民兵装备由数量扩张转向质量提升&#xf…

2025-1-21 Newstar CTF web week1 wp

文章目录 week1headach3会赢吗智械危机 week1 headach3 根据提示&#xff0c;在页面的请求头里找到flag flag{You_Ar3_R3Ally_A_9ooD_d0ctor} 会赢吗 打开控制台&#xff0c;拿到第一部分flag 将地址栏改为提示&#xff0c;去到下一关 控制台调用函数&#xff0c;得到flag …

C语言程序设计十大排序—选择排序

文章目录 1.概念✅2.选择排序&#x1f388;3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅5.十大排序 1.概念✅ 排序是数据处理的基本操作之一&#xff0c;每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法&#xff0c;排序后的数据更易于处理和查找。在…

(三)线性代数之二阶和三阶行列式详解

在前端开发中&#xff0c;尤其是在WebGL、图形渲染、或是与地图、模型计算相关的应用场景里&#xff0c;行列式的概念常常在计算变换矩阵、进行坐标变换或进行图形学算法时被使用。理解二阶和三阶行列式对于理解矩阵运算、旋转、平移等操作至关重要。下面&#xff0c;我将结合具…

通过docker overlay2目录名查找容器名和容器ID

参考&#xff1a;https://blog.csdn.net/beck_li/article/details/142059298 有时候经常会有个别容器占用磁盘空间特别大&#xff0c;这个时候就需要通过docker overlay2 日录名查找对应容器名. 1.首先进入到 /var/lib/docker/overlay2 目录下 #cd /var/lib/docker/overlay2 …

2025年入职/转行网络安全,该如何规划?网络安全职业规划

网络安全是一个日益增长的行业&#xff0c;对于打算进入或转行进入该领域的人来说&#xff0c;制定一个清晰且系统的职业规划非常重要。2025年&#xff0c;网络安全领域将继续发展并面临新的挑战&#xff0c;包括不断变化的技术、法规要求以及日益复杂的威胁环境。以下是一个关…

Vue平台开发三——项目管理页面

前言 对于多个项目的使用&#xff0c;可能需要进行项目切换管理&#xff0c;所以这里创建一个项目管理页面&#xff0c;登录成功后跳转这个页面&#xff0c;进行选择项目&#xff0c;再进入Home页面展示对应项目的内容。 一、实现效果图预览 二、页面内容 功能1、项目列表展…

深入解析人工智能中的协同过滤算法及其在推荐系统中的应用与优化

目录 什么是协同过滤算法核心原理基本步骤相似度计算代码实现详解1.流程图2.创建基础的数据结构存储用户评分数据3.计算用户相似度4.获取相似用户5.推荐方法 算法优化建议1. 数据预处理优化去除异常值和噪声数据进行数据标准化使用稀疏矩阵优化存储 2. 相似度计算优化使用局部敏…