python爬虫爬取某图书网页实例
文章目录
- 导入相应的库
- 正确地设置代码的基础部分
- 设置循环遍历
- 遍历URL
- 保存图片和文档
- 全部代码即详细注释
下面是通过requests库来对ajax页面进行爬取的案例,与正常页面不同,这里我们获取url的方式也会不同,这里我们通过爬取一个简单的ajax小说页面来为大家讲解。(注:结尾附赠全部代码与详细注释)
导入相应的库
爬取数据必须有相应的库,这里我们使用爬虫脚本中常用的几个Python库:os.path、fake_useragent 和 requests。
1.os.path:
- 这个模块主要用于处理文件和目录的路径。它提供了一系列的功能来进行路径的拼接、拆分、查询等操作,以确保路径的跨平台兼容性(比如Windows和Unix/Linux系统的路径分隔符不同)。
- 在爬虫中,os.path 通常用于构建本地文件系统的路径,以便保存从网络上下载的图片、文本数据等。
2.fake_useragent:
- 这个库用于生成随机的、看起来像是真实浏览器的User-Agent字符串。User-Agent是一个在HTTP请求中发送给服务器的头部信息,它告诉服务器发起请求的客户端(通常是浏览器)的类型、版本和操作系统等信息。
- 在爬虫中,由于许多网站会检查User-Agent来识别爬虫请求并阻止它们,因此使用fake_useragent可以帮助爬虫绕过这种简单的反爬虫机制。
3.requests:
- requests是Python中非常流行的HTTP库,用于发送HTTP/1.1请求。它提供了一个简单易用的API,用于处理各种HTTP请求,如GET、POST、PUT、DELETE等。
- 在爬虫中,requests库是发送网络请求并获取响应的主要工具。它支持会话(Session)对象、HTTPS请求、文件上传、Cookie处理、重定向、连接池等功能,非常适合用于构建复杂的爬虫系统。
import os.path
import fake_useragent
import requests
正确地设置代码的基础部分
这里我们生成一个随机的User-Agent、检查并创建目录以便储存爬取的图片、以及打开(或创建)一个文本文件来保存数据。
import os.path
import fake_useragent
import requests # 判断是否是直接运行该脚本
if __name__ == '__main__': head = {"User-Agent": fake_useragent.UserAgent().random} if not os.path.exists("./biqugePic"): os.mkdir("./biqugePic") f = open("./biquge.txt", 'w', encoding='utf8')
设置循环遍历
循环遍历URL(这里为大家提供具体url的获取方法,并循环了1至9页的数据为大家做案例),并发送了带有随机User-Agent的GET请求。这是爬虫中常见的做法,用于从网站的不同页面获取数据。
for i in range(1, 10): url = f"https://www.bqgui.cc/json?sortid=1&page={i}" resp = requests.get(url, headers=head)
首先进入网页,点击F12打开自定义与控制工具,点击fecth/XHR,此时显示部分为空白。
这个时候我们滚动鼠标滚轮,就会出现相应的url,这里的https://www.bqgui.cc/json?sortid=1&page=2,其中尾部2表示滚轮页面第二页,想要获取1至9我们只需要进行一个简单的循环遍历即可。
遍历URL
遍历从URL获取的JSON响应,该响应包含多个项目。对于每个项目,您都提取了图片URL、文章名、作者和简介,并计划将这些信息打印到控制台以及下载图片和保存文本信息到文件。
for item in resp.json(): # 从每个JSON对象中提取所需的信息 img_url = item['url_img'] articlename = item['articlename'] author = item['author'] intro = item["intro"] # 打印提取的信息到控制台 print(img_url, author, articlename, intro) # 发送另一个GET请求到图片URL,以获取图片内容 img_rest = requests.get(img_url, headers=head)
保存图片和文档
设置代码来保存图片到以文章名命名的文件中,并将作者、文章名和简介信息写入到"./biquge.txt"文件中。
with open(f"./biqugePic/{articlename}.jpg", "wb") as fp:
# 将图片内容写入文件
fp.write(img_rest.content)
# 将作者、文章名和简介信息写入到"./biquge.txt"文件中
f.write(author + '#' + articlename + '#' + intro + "\n")
全部代码即详细注释
import os.path
import fake_useragent
import requests # 判断是否是直接运行该脚本
if __name__ == '__main__': # 创建一个包含随机User-Agent的HTTP请求头 head = {"User-Agent": fake_useragent.UserAgent().random} # 检查是否存在名为"./biqugePic"的文件夹,如果不存在则创建它 if not os.path.exists("./biqugePic"): os.mkdir("./biqugePic") # 以写入模式打开(或创建)一个名为"./biquge.txt"的文件,用于保存数据 f = open("./biquge.txt", 'w', encoding='utf8') # 循环从第1页到第9页(注意,range函数是左闭右开的,所以不包括10) for i in range(1, 10): # 构造请求URL,这里假设每个页面的数据都可以通过此URL以JSON格式获取 url = f"https://www.bqgui.cc/json?sortid=1&page={i}" # 发送GET请求到URL,并带上之前创建的请求头 resp = requests.get(url, headers=head) # 假设服务器返回的是JSON格式的数据,我们遍历这些数据 # 注意:这里有个潜在的问题,因为内部循环的变量也使用了'i',这会覆盖外层循环的'i' # 为了避免混淆,应该使用另一个变量名,比如'item' for item in resp.json(): # 从每个JSON对象中提取所需的信息 img_url = item['url_img'] articlename = item['articlename'] author = item['author'] intro = item["intro"] # 打印提取的信息到控制台 print(img_url, author, articlename, intro) # 发送另一个GET请求到图片URL,以获取图片内容 img_rest = requests.get(img_url, headers=head) # 打开(或创建)一个文件,用于保存图片,文件名基于文章名 with open(f"./biqugePic/{articlename}.jpg", "wb") as fp: # 将图片内容写入文件 fp.write(img_rest.content) # 将作者、文章名和简介信息写入到"./biquge.txt"文件中 f.write(author + '#' + articlename + '#' + intro + "\n")
注意:
- 代码假设了服务器返回的JSON结构是固定的,并且每个对象都包含’url_img’, ‘articlename’, ‘author’, 和 'intro’键。
- 在实际应用中,网络请求可能会失败(如404、500等HTTP错误),应该添加错误处理逻辑。
- 由于网络延迟和带宽限制,大量请求可能会导致性能问题或被服务器封锁。
- 使用fake_useragent生成随机User-Agent可以帮助绕过一些简单的反爬虫机制,但不一定对所有网站都有效。
相关文章:

python爬虫爬取某图书网页实例
文章目录 导入相应的库正确地设置代码的基础部分设置循环遍历遍历URL保存图片和文档全部代码即详细注释 下面是通过requests库来对ajax页面进行爬取的案例,与正常页面不同,这里我们获取url的方式也会不同,这里我们通过爬取一个简单的ajax小说…...

Linux 用户管理的基本概念、常用工具及操作流程
😀前言 本篇博文是关于Linux 中用户管理的基本概念、常用工具及操作流程,并提供了一些实用的示例和注意事项。希望这些内容能帮助读者在日常工作中更加高效地管理 Linux 系统的用户账户,希望你能够喜欢🥰 🏠个人主页&a…...

手撕C++入门基础
1.C介绍 C课程包括:C语法、STL、高阶数据结构 C参考文档:Reference - C Reference C 参考手册 - cppreference.com cppreference.com C兼容之前学习的C语言 2.C的第一个程序 打印hello world #define _CRT_SECURE_NO_WARNINGS 1 // test.cpp // …...
NPM版本控制策略:实现版本候选行为的指南
引言 在现代JavaScript项目中,依赖管理是确保应用稳定性和安全性的关键环节。NPM(Node Package Manager)作为Node.js的包管理器,提供了一套灵活的版本控制机制,允许开发者精确控制依赖包的版本。版本候选行为…...
问题集锦6
1.外调外围接口数据库没有变化 我已经修改完发到线上,看调用用代码释放更新了 or 自己掉测试环境试下 handledList 2.list每次写入最前面 List<Integer> snew ArrayList<>();s.add(1);s.add(2);s.add(0,0);System.out.println(s);3.集合 List<Inte…...

【研发日记】嵌入式处理器技能解锁(四)——TI C2000 DSP的Memory
文章目录 前言 背景介绍 Memory映射 RAM ROM 外设Register Memory分配 应用实例 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 见《【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(串口)通信》 见《…...

Ubuntu离线安装docker
查看操作系统版本: rootzyh-VMware-Virtual-Platform:~/install# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04 LTS Release: 24.04 Codename: noble rootzyh-VMware-Virtual-Platform:~/install#…...

【抓耳挠腮,还是升职加薪,一起来画架构图!】
1. 焦头烂额 最近又遇到个焦头烂额的事情 ,老板有了新想法,业务有所转向,需要新的方案设计 ,架构设计,以进行后续实施。很快,第一次汇报来了, 由于前期准备时间短,模块拆分不清晰&a…...

算法的学习笔记—合并两个排序的链表(牛客JZ25)
😀前言 在算法面试中,链表问题是经常遇到的考点之一,其中合并两个排序链表是一个非常经典的问题。本文将详细介绍如何通过递归和迭代两种方式实现两个有序链表的合并。 🏠个人主页:尘觉主页 文章目录 😀合并…...

《虚拟之旅:开启无限可能的机器世界》简介:
1.Ubonto的介绍: Ubuntu 是一个流行的开源操作系统,基于 Linux 内核。 它具有以下一些特点和优势: 开源免费:任何人都可以免费使用、修改和分发。丰富的软件库:通过软件包管理器可以方便地安装各种应用程序。良好的…...
centos7 服务器搭建
1. 查看 centos 版本 cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)2 .查看 ip地址 ip addr sudo yum install net-tools -y 3. 是否能够上网 ping www.baidu.com ping 114.114.114.114 sudo systemctl restart network 4. DNS 更新DNS配置 编辑/etc/r…...

【Godot4自学手册】第四十五节用着色器(shader)制作水中效果
本节内容,主要学习利用着色器制作水波纹效果,效果如下: 一、搭建新的场景 首先我们新建场景,根节点选择Node2D,命名为Water,给根节点添加两个Tilemap节点,一个命名为Background主要用于绘制地…...

VMware Workstation Pro 安装 Ubuntu Server
这里写目录标题 VMware Workstation Pro 安装 Ubuntu Server1. 启动选项2. 系统语言3. 安装程序升级4. 键盘配置5. 安装类型6. 网卡配置7. 代理配置8. 系统镜像配置9. 硬盘配置10. 账户配置11. Ubuntu Pro 版本12. SSH 服务13. 推荐软件14. 安装成功15. 第一次重启报错16. 登录…...

智能化包括自动化与非自动化
智能化通常指的是系统或设备具备智能功能,以提高其自主性和效率。智能化可以分为自动化与非自动化两大类,每一类都有其独特的特点和应用场景。 一、自动化 自动化指的是系统能够在无需人为干预的情况下完成任务或操作。自动化系统通常依赖于预设的规则、…...
微前端架构的容器化部署:策略、实践与优势
随着微服务架构的兴起,微前端架构也成为现代Web应用开发的热门趋势。容器化技术,以其轻量级、可移植性和易于管理的特点,成为微前端部署的理想选择。本文将详细介绍微前端架构下应用容器化部署的策略、实践步骤以及这一方法的优势。 容器化技…...

面试题(网络、js、框架)
自我介绍 您好,面试官!我叫[您的姓名],非常荣幸能有机会参加这次面试。 在过去的 3 年里,我一直专注于前端开发领域,积累了丰富的实践经验。 在 Vue.js 项目中,我能够熟练运用组件化开发模式,实…...

C语言典型例题40
《C程序设计教程(第四版)——谭浩强》 题目 例题3.8 运输公司对用户计算运费。路程(以s表示,单位为千米),吨/千米运费越低。标准如下: s<250 没…...
【大模型部署及其应用 】使用 Ollama 和 Ollama WebUI 在本地运行 Llama 3
使用 Ollama 和 Ollama WebUI 在本地运行 Llama 3 目录 开始使用 Llama 3设置 Ollama WebUI访问 Ollama WebUI使用 Docker GenAI Stack 的 Llama 3骆驼 2 与 骆驼 3...

uniapp-部分文件中文乱码
一、问题 在开发时遇到,部分页面的中文显示乱码,如图 搜索了一下解决方法,这里记录一下 二、问题原因: 页面的编码格式不是 utf-8 造成的 三、解决方法 打开出现乱码页面选择编译器左上角的文件 > 以指定编码重新打开 选择U…...

Day41 | 647. 回文子串 516.最长回文子序列
语言 Java 647. 回文子串 回文子串 题目 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 思路 动规五部曲来分析 1.dp数组的含义&#x…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...