当前位置: 首页 > news >正文

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.lryc.cn/news/445581.html

相关文章:

  • 下水道内缺陷识别检测数据集 yolo数据集 共2300张
  • 年轻用户对Facebook的使用趋势分析
  • EasyCVR全方位安全守护智慧电厂:构建高效视频监控系统优势分析
  • 基于深度学习的情感生成与交互
  • JavaScript匿名函数
  • 线性判别分析(LDA)中计算两个类的中心点在投影方向w上的投影示例
  • 前端知识——标签知识
  • 使用Docker和cpolar在Linux服务器上搭建DashDot监控面板
  • 解决docker拉取镜像报错
  • C++之STL—deque容器
  • leveldb前缀匹配查找Seek
  • 【自动驾驶】ros如何隔绝局域网内其他电脑播包
  • MySQL程序
  • 吉林省自闭症寄宿学校:提供个性化培养方案
  • Java基础 — Java 虚拟机(上篇)
  • C++ | Leetcode C++题解之第435题无重叠区间
  • AI编辑器CURSOR_CURSOR安装教程_使用AI进行编码的最佳方式。
  • 华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息
  • 探索 Go 语言程序实体:揭开神秘面纱
  • 深入理解端口、端口号及FTP的基本工作原理
  • 9.3 Linux_文件I/O_相关函数
  • 点亮一个LED灯
  • 分布式框架 - ZooKeeper
  • 8月份,AI图像生成领域web端产品排行榜及产品是做什么的
  • Sqlite_Datetime列选择三月的行
  • spring里面内置的非常实用的工具
  • 计算机毕业设计 基于Python内蒙古旅游景点数据分析系统 Django+Vue 前后端分离 附源码 讲解 文档
  • centos7 docker部署nacos
  • 短视频矩阵源码/短视频矩阵系统搭建/源码开发知识分享
  • Git使用教程-将idea本地文件配置到gitte上的保姆级别教程