Python爬虫实战:抓取并保存网络图片的完整流程

白榆
白榆
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍基于Python 3.5.2的爬虫实现,通过urllib请求网页并解析HTML获取图片链接。利用正则表达式匹配图片URL,结合urllib.request.urlretrieve将图片保存至指定目录。代码包含异常处理与User-Agent设置,适用于学习网络数据采集基础操作。

本文详细介绍一种利用Python编写爬虫程序来抓取网络图片并存储到本地的具体实现方案,供读者参考与实践。

本次示例所选取的图片数据来源网站为www.qiubaichengren.com。

本示例代码的运行环境基于Python 3.5.2版本。

请注意查看内容! 请注意查看内容!! 请注意查看内容!!!

具体实现代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import urllib
import urllib.request
import re
from urllib.error import URLError
class QsSpider:
  def __init__(self):
    self.user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    self.header = {'User-Agent': self.user_agent}
    self.save_dir = './pic'
    self.url = 'http://www.qiubaichengren.com/%s.html'
  def start(self):
    for i in range(1, 10):
      self.load_html(str(i))
  def load_html(self, page):
    try:
      web_path = self.url % page
      request = urllib.request.Request(web_path, headers=self.header)
      with urllib.request.urlopen(request) as f:
        html_content = f.read().decode('gb2312')
        # print(html_content)
        self.pick_pic(html_content)
    except URLError as e:
      print(e.reason)
    return
  def save_pic(self, img):
    print(img)
    save_path = self.save_dir + "/" + img.replace(':', '@').replace('/', '_')
    if not os.path.exists(self.save_dir):
      os.makedirs(self.save_dir)
    print(save_path)
    urllib.request.urlretrieve(img, save_path)
    pass
  def pick_pic(self, html_content):
    regex = r'src="(http:.*?\.(?:jpg|png|gif))'
    patten = re.compile(regex)
    pic_path_list = patten.findall(html_content)
    for i in pic_path_list:
      self.save_pic(str(i))
      print(i)
spider = QsSpider()
spider.start()

执行上述代码后,将在本地生成大量对应的图片文件。

如需进一步了解Python相关技术,可参考本站系列教程:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》。

期望本文提供的代码示例能对读者的Python编程学习有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表