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_inputraw_input是一个内置函数,用于从标准输入(通常是键盘)读取一行文本,并返回一个字符串。这个函数不会执行任何类型的转换,返回的内容就是用户输入的原始字符串。

def main():url = raw_input('输入百度文库地址:')fetch_images_from_page(url)if __name__ == '__main__':main()

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

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

相关文章

PingCastle:一款针对活动目录AD的安全强化工具

关于PingCastle PingCastle是一款针对活动目录AD的安全强化工具,可以帮助广大研究人员提升活动目录的安全性,该工具甚至可以做到在 20% 的时间内实现 80% 的AD安全性。 Ping Castle 是一种旨在使用基于风险评估和成熟度框架的方法快速评估活动目录AD 安…

华硕电脑用U盘方式重装系统

1.格式化原来的U盘(8g以上),文件系统格式需要改为:NTFS. 2.确保电脑连网。从官网下载安装工具。打开网址为:https://www.microsoft.com/zh-cn/software-download/windows10 3.下载好软件后,双击运行即可。…

Vue3学习---【内置指令】【从零开始的Vue3学习】

目录 前言: v-text v-html v-show v-if v-else v-else-if 注意: v-for v-for中可以访问父作用域 v-for的多层嵌套 使用of代替in v-for与对象 v-for中使用范围值 通过key来管理状态 v-on 示例 v-on作用于不同对象 v-bind v-model v-…

后端开发工程师转行大模型领域:全面学习路线指南,非常详细收藏我这一篇就够了

随着人工智能技术的迅猛发展,特别是大模型(如GPT-3、BERT等)在自然语言处理、计算机视觉等多个领域的广泛应用,越来越多的技术人员开始考虑转型至这一充满挑战与机遇的新领域。对于已经在后端开发领域积累了丰富经验的工程师来说&…

TFT-LCD支持RGB接口,设置颜色

TFT-lCD常用的接口,TTL(RGB)、LVDS、EDP、MIPI - TTL(RGB):TTL(晶体管-晶体管逻辑)是一种数字信号传输方式,常用于低速RGB视频信号传输。- LVDS:低电压差分信号(LVDS)是一种高速度、低功耗的串行数据传输技术,常用于显示器和通信设备之间。- eDP:嵌入式DisplayP…

Health Check

强大的自愈能力是Kubernetes这类容器编排引擎的一个重要特性,自愈的默认实现方式是自动重启发生故障的容器,除此之外,用户还可以利用Liveness和Readiness探测机制设置更精细的健康检查,进而实现如下需求: 零停机部署避…

第 15 章 查询优化的百科全书——EXPLAIN 详解

一条查询语句在经过 MySQL 查询优化器的各种基于成本和规则的优化后会生成一个所谓的执行计划,它展示了接下来具体执行查询的方式。 使用Explain语句来查看执行计划。 列名描述id在一个大的查询语句中每个 SELECT 关键字都对应一个唯一的 idselect_typeSELECT 关键…

新规2027年生效 美国禁止中国智能网联汽车软硬件

当地时间9月23日,美国商务部工业和安全局(BIS)发布了一项拟议规则制定通知(NPRM),该通知将禁止销售或进口集成特定硬件和软件的联网车辆,或单独销售这些组件,这些硬件和软件与中国或…

Python 解析 html

一、场景分析 假设有如下 html 文档&#xff1a; 写一段 python 脚本&#xff0c;解析出里面的数据&#xff0c;包括经度维度。 <div classstorelist><ul><li lng"100.111111" lat"10.111111"><h4>联盟店1</h4><p>…

Kubernetes 深入浅出系列 | 容器剖析之容器基本实现原理

一、容器基本实现原理 Docker 主要通过如下三个方面来实现容器化&#xff1a; ① 使用操作系统的 namespace 隔离系统资源技术&#xff0c;通过隔离 网络、PID 进程、系统信号量、文件系统挂载、主机名和域名&#xff0c;来实现在同一宿主机系统中&#xff0c;运行不同的容器&…

yum库 docker的小白安装教程(附部分问题及其解决方案)

yum库 首先我们安装yum 首先在控制台执行下列语句 首先切换到root用户&#xff0c;假如已经是了就不用打下面的语句 su root #使用国内的镜像&#xff0c;不执行直接安装yum是国外的&#xff0c;那个有问题 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.al…

打印规律图形

思路:将主对角线的1,2,3,4看成一行,5,6,7看成一行,8,9看成一行,10看成一行。按照这种方法,遍历一遍,正好是1~10。 然后在遍历的过程中将这些数存放在数组中。 上图所示:1的坐标为(1,1),因为i=1,j=1时为1。因此: 对于第一行的数(i=1): 1的坐标为(1,1),对应放在…

低场核磁共振成像系统MRI的成像优势特点

低场核磁共振成像系统MRI的成像优势特点 精准医疗是未来医疗行业的发展趋势&#xff0c;而医疗技术的发展对于精准医疗的实现至关重要&#xff1b;低场MRI作为一种重要的医学影像技术&#xff0c;在精准医疗时代具有独特的优势。 一、定义与特点 低场MRI是指磁场强度低于高场M…

防爆对讲机国产化,走对自主可控的必由之路!

在“危、急、特”复杂多变的作业场景中&#xff0c;防爆对讲机作为关键通信工具&#xff0c;其技术自主可控与安全可靠性成为不容忽视的迫切需求。长期以来&#xff0c;核心技术依赖进口的现状成为制约行业发展的瓶颈&#xff0c;面临安全隐患与成本压力的困境&#xff0c;为打…

Unity开发绘画板——02.创建项目

1.创建Unity工程 我们创建一个名为 DrawingBoard 的工程&#xff0c;然后先把必要的工程目录都创建一下&#xff1a; 主要包含了一下几个文件夹&#xff1a; Scripts &#xff1a;存放我们的代码文件 Scenes &#xff1a;工程默认会创建的&#xff0c;存放场景文件 Shaders &…

(学习记录)使用HAL库 STM32CubeMX——GPIO引脚输入配置

STM32F103C8T6的GPIO引脚输入配置 时钟配置 &#xff08;学习记录&#xff09;使用 STM32CubeMX——配置时钟&#xff08;入门&#xff09;https://blog.csdn.net/Wang2869902214/article/details/142423522 GPIO 引脚输出配置 &#xff08;学习记录&#xff09;使用 STM32…

货代选择海运系统时要注意什么问题?

在全球贸易蓬勃发展的当下&#xff0c;货代企业在物流链条中起着举足轻重的作用。而一个优质的海运系统&#xff0c;则是货代企业提升竞争力、实现高效运营的关键利器。那么&#xff0c;货代企业在选择海运系统时&#xff0c;需要注意哪些问题呢&#xff1f; 一、避免过于关注价…

前端报错401 【已解决】

前端报错401 【已解决】 在前端开发中&#xff0c;HTTP状态码401&#xff08;Unauthorized&#xff09;是一个常见的错误&#xff0c;它表明用户试图访问受保护的资源&#xff0c;但未能提供有效的身份验证信息。这个错误不仅关乎用户体验&#xff0c;也直接关系到应用的安全性…

什么软件可以录屏?5个软件帮助你轻松进行录屏操作

什么软件可以录屏&#xff1f;5个软件帮助你轻松进行录屏操作 录屏软件是日常工作和学习中不可或缺的工具&#xff0c;广泛应用于制作教程、记录在线会议、游戏录制等场景。以下是五款功能强大且易于使用的录屏软件&#xff0c;能够帮助你轻松进行录屏操作。 迅捷屏幕录像工具…

从手动测试菜鸟,到自动化测试老司机,实现自动化落地

虽然许多伙伴是一个测试老人了&#xff0c;但是基本上所有的测试经验都停留在手工测试方面&#xff0c;对于自动化测试方面的实战经验少之又少。 其实&#xff0c;究其原因&#xff1a;一方面是&#xff0c;自动化方面不求上进&#xff0c;觉得会手工测试就可以了&#xff0c;自…