python爬虫初体验(四)—— 百度文库PPT的爬取
文章目录
- 1. 安装包
- 2. 相关代码
- 3. 说明
- 4. 注意事项
- 5. 扩展功能
- 5.1 多页面下载
- 5.2 输入地址下载
在Python 2中编写一个爬虫来大量下载图片,可以使用requests库来发送HTTP请求,并使用BeautifulSoup来解析HTML页面。此外,可以使用urllib2库来下载图片。lxml 是一个 Python 库,用于处理 XML 和 HTML 文档。它提供了高效的 XML/HTML 解析和生成工具,是处理 Web 页面内容的常用工具之一。
1. 安装包
pip install requests
pip install beautifulsoup4
pip install lxml
pip install urllib2
2. 相关代码
下面是一个相关代码,演示如何从一个网页中下载图片:
# -*- coding: utf-8 -*-
import requests
import os
import urllib2
from lxml import etree# 创建目录函数
def create_file(file_path):# 如果目录不存在,则创建目录if not os.path.exists(file_path):os.makedirs(file_path)# 下载图片函数
def download_image(url, path):try:# 使用 urllib2 打开 URL 并获取响应response = urllib2.urlopen(url)# 以二进制写模式打开文件,并写入响应内容with open(path, 'wb') as f:f.write(response.read())except Exception as e:# 如果发生异常,打印错误信息print("Failed to download image: {}".format(url))print("Error: ", str(e))# 从网页中抓取图片的函数
def fetch_images_from_page(url):# 使用 requests 发送 GET 请求获取网页内容resp = requests.get(url)# 解析网页文本text = resp.text# 使用 lxml 解析 HTML 文档html = etree.HTML(text)# 通过 XPath 获取包含图片的元素列表img_list = html.xpath('//div[@class="mod flow-ppt-mod"]/div/div/img')# 初始化计数器cnt = 1# 目标文件路径file_path = './ppt/'# 创建目标文件夹create_file(file_path)# 遍历图片元素列表for i in img_list:try:# 尝试获取图片的 src 属性img_url = i.xpath('./@src')[0]except IndexError:# 如果 src 属性不存在,则尝试获取 data-src 属性img_url = i.xpath('./@data-src')[0]# 构建图片文件名file_name = '%s/page_%d.jpg' % (file_path, cnt)# 下载图片download_image(img_url, file_name)# 输出下载成功的提示信息print("Downloaded: {}".format(file_name))# 增加计数器cnt += 1# 主函数
def main():# 目标网页 URLurl = 'https://wenku.baidu.com/view/c784625f1a2e453610661ed9ad51f01dc3815771.html'# 调用抓取图片的函数fetch_images_from_page(url)# 如果当前模块是主程序,则执行 main 函数
if __name__ == '__main__':main()
3. 说明
- 导入模块:导入必要的模块 requests、os、urllib2 和 lxml.etree。
- 创建目录函数:create_file 用于创建指定的目录。
- 下载图片函数:download_image 用于下载图片并保存到本地。
- 从网页中抓取图片的函数:fetch_images_from_page 用于从指定网页抓取图片并下载到本地。
- 主函数:main 用于定义入口 URL 并调用抓取图片的函数。
4. 注意事项
- 图片URL:确保图片的URL是绝对路径。如果是相对路径,需要拼接成绝对路径。
- 错误处理:添加了异常处理逻辑,以处理下载过程中可能出现的错误。
- 文件路径:确保保存图片的路径正确,并且有写入权限。
- XPath 表达式:使用 XPath 表达式从网页中提取图片元素。
5. 扩展功能
5.1 多页面下载
如果你需要从多个页面下载图片,可以将页面的URL放入一个列表中,并循环处理每个页面。
def main():# 目标URL列表urls = ['https://example.com/images1', 'https://example.com/images2']# 抓取并下载图片for url in urls:fetch_images_from_page(url)if __name__ == '__main__':main()
5.2 输入地址下载
如果你需要输入想要的地址,然后下载相对应的图片,需要使用raw_input
,raw_input
是一个内置函数,用于从标准输入(通常是键盘)读取一行文本,并返回一个字符串。这个函数不会执行任何类型的转换,返回的内容就是用户输入的原始字符串。
def main():url = raw_input('输入百度文库地址:')fetch_images_from_page(url)if __name__ == '__main__':main()
相关文章:
python爬虫初体验(四)—— 百度文库PPT的爬取
文章目录 1. 安装包2. 相关代码3. 说明4. 注意事项5. 扩展功能5.1 多页面下载5.2 输入地址下载 在Python 2中编写一个爬虫来大量下载图片,可以使用requests库来发送HTTP请求,并使用BeautifulSoup来解析HTML页面。此外,可以使用urllib2库来下载…...

下水道内缺陷识别检测数据集 yolo数据集 共2300张
下水道内缺陷识别检测数据集 yolo数据集 共2300张 下水道内部缺陷识别数据集(Sewer Interior Defect Recognition Dataset, SIDRD) 摘要 SIDRD 是一个专门针对下水道内部缺陷识别的数据集,旨在为城市基础设施维护和管理提供一个标准化的训练…...

年轻用户对Facebook的使用趋势分析
在社交媒体的蓬勃发展中,Facebook作为全球最大的社交平台之一,尽管面临着来自新兴平台的竞争,仍然在年轻用户中扮演着重要角色。然而,年轻用户对Facebook的使用方式和趋势却在不断变化。本文将探讨年轻用户对Facebook的使用趋势&a…...

EasyCVR全方位安全守护智慧电厂:构建高效视频监控系统优势分析
随着信息技术的飞速发展和数字化时代的到来,电厂作为能源供应的重要枢纽,其安全性和管理效率成为社会各界关注的焦点。为了满足电厂对高效、智能、可靠视频监控系统的需求,基于EasyCVR平台建设的电厂视频监控系统应运而生。 一、系统构成 基…...
基于深度学习的情感生成与交互
基于深度学习的情感生成与交互是一个新兴的研究领域,旨在通过深度学习技术生成具有情感的反应,以增强人机交互的自然性和有效性。该技术涉及情感识别、自然语言处理、计算机视觉等多个领域,并在多个应用场景中展现出潜力。 情感生成的主要方…...
JavaScript匿名函数
引言 JavaScript是一种广泛使用的脚本语言,用于Web开发和其他领域。在JavaScript中,函数是非常重要的组成部分,它们允许开发者组织代码、复用代码以及执行特定的任务。本文将探讨一种特殊的函数类型——匿名函数,并介绍如何使用它…...
线性判别分析(LDA)中计算两个类的中心点在投影方向w上的投影示例
通过一个具体的例子,详细说明 w T μ 0 w^T \mu_0 wTμ0 和 w T μ 1 w^T \mu_1 wTμ1 如何表示两个类的中心点在投影方向 w w w 上的投影。 假设: 我们有两个类的数据集,均值向量 μ 0 \mu_0 μ0 和 μ 1 \mu_1 μ1ÿ…...
前端知识——标签知识
1.p段落标签 ——一个p标签表示一个段落 单独占一行 >p标签里面不可以嵌套其它的块级标签(div h1~h6 p等) 会导致浏览器自动分裂成两个标签 不规范的写法 >但是可以包裹span标签 2.span标签 ——包裹文字标签 可以和span一行显示 3.文本格式化标签 ——给…...

使用Docker和cpolar在Linux服务器上搭建DashDot监控面板
使用Docker和cpolar在Linux服务器上搭建DashDot监控面板 前言环境准备安装Docker下载Dashdot镜像 部署DashDot应用本地访问DashDot服务安装cpolar内网穿透固定DashDot公网地址结语 前言 在这个数字化飞速发展的时代,服务器作为支撑各种应用和服务的基础设施…...
解决docker拉取镜像报错
报错信息如下: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)网上试了很多方式,有的需要配置DNS解析&…...

C++之STL—deque容器
双端数组 区别于 vector (单端数组), 构造函数 注意:读取数据时,const修饰保证函数内只能读取,不能修改数据 void print(const deque<int>& deq) {for (deque<int>::const iterator it deq.begin(); it ! deq.e…...
leveldb前缀匹配查找Seek
个人随笔 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 参考:https://github.com/google/leveldb/blob/main/include/leveldb/db.h 参考:百度AI 1. 背景 最近偶然发现了,leveldb前缀匹配查找的功能。 之前没有从这个角度去想过See…...
【自动驾驶】ros如何隔绝局域网内其他电脑播包
1.问题 可能碰到自己播包的时候,别人播包的传到我们电脑上,导致无法分析问题,或者出现一些奇怪的现象。 2.解决 export ROS_LOCALHOST_ONLY1 在终端加上这句话,或者在~/.bashrc中添加,通过source ~/.bashrc使其生…...

MySQL程序
目录 MySQL程序 常用的MySQL的程序 mysqld程序 mysql客户端 客户端命令的常用的选项 配置文件 配置文件语法 MySQL客户端命令 编辑 .sql 文件中执行SQL语句 mysqlcheck (表维护程序) Mysqldump(数据库备份程序) mysql…...

吉林省自闭症寄宿学校:提供个性化培养方案
在吉林省的怀抱中,隐藏着一片温馨而特殊的天地——星贝育园自闭症儿童寄宿制学校。这里,不是简单的教育场所,而是无数自闭症儿童梦想启航的港湾,是他们感受爱、学习成长、绽放自我光芒的温馨家园。 自闭症,一个逐渐被…...
Java基础 — Java 虚拟机(上篇)
该文章属于Java进阶部分的JVM入门,本章讲述了JVM的历史、Java源代码到机器码的过程以及 Class字节码文件的内部结构等。 了解了这篇文章,能让你深入地了解JVM知识,保证在短时间内掌握JVM! JVM 入门教程(上篇࿰…...

C++ | Leetcode C++题解之第435题无重叠区间
题目: 题解: class Solution { public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.empty()) {return 0;}sort(intervals.begin(), intervals.end(), [](const auto& u, const auto& v) {retur…...

AI编辑器CURSOR_CURSOR安装教程_使用AI进行编码的最佳方式。
一、CUROR简介 作为一个在代码海洋里遨游多年的老程序员,我得说,遇到CURSOR这位AI编辑器,就像是编程路上偶遇了一位智慧而又贴心的老友。 想象一下,夜深人静,你正埋头于那些错综复杂的逻辑和无尽的bug之中࿰…...
华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息
场景介绍 实况窗是一种帮助用户聚焦正在进行的任务,方便快速查看和即时处理的通知形态。有关实况窗简介、权限申请、开放场景、设计规范等说明,请参见Live View Kit简介。 通过Push Kit发送的实况窗消息支持三种操作类型,分别是: 实况窗消息操作类型 支持操作的场景类型 …...
探索 Go 语言程序实体:揭开神秘面纱
《探索 Go 语言程序实体:揭开神秘面纱》 在 Go 语言的世界里,程序实体是构建强大应用的基石。它们就像是魔法世界中的元素,各自有着独特的能力和用途。让我们一起深入探索 Go 语言程序实体的那些事儿。 一、什么是 Go 语言程序实体? 在 Go 语言中,程序实体是指可以被命…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...