Python3简单爬虫抓取网页图片代码实例

下面我将详细讲解“Python3简单爬虫抓取网页图片代码实例”的完整攻略。

Python3简单爬虫抓取网页图片代码实例

实现原理

使用requests获取网页HTML源码,使用BeautifulSoup解析出网页中的图片URL,然后使用requests库将图片下载到本地。

代码实现

首先需要安装requestsBeautifulSoup模块,可以使用以下命令进行安装:

pip install requests
pip install beautifulsoup4

然后就可以开始编写代码了:

import os
import requests
from bs4 import BeautifulSoup

url = 'https://www.example.com'   # 替换成要爬取的网页

# 获取网页HTML源码
html = requests.get(url, timeout=10).text
bs_obj = BeautifulSoup(html, 'html.parser')

# 空的图片链接列表
img_list = []

# 解析图片链接
for img in bs_obj.find_all('img'):
    img_url = img.get('src')   # 获取图片链接
    if img_url and 'http' in img_url:
        img_list.append(img_url)

# 下载图片
for img_url in img_list:
    try:
        res = requests.get(img_url)
        if str(res.status_code)[0] == '4':   # 判断请求是否成功
            print('请求失败:', img_url)
            continue
        with open(os.path.join('./images/', os.path.basename(img_url)), 'wb') as f:
            f.write(res.content)
            print('下载成功:', img_url)
    except Exception as e:
        print('下载失败:', img_url, e)

以上代码会首先获取指定网页的HTML源码,然后使用BeautifulSoup解析出网页中的所有图片链接,并将其存储到img_list列表中。接下来,使用requestsos模块,依次将每个图片链接的图片保存到本地的./images/路径下,并在下载成功后打印下载成功的提示信息,如果下载失败则打印下载失败的提示信息。

下面给出两个示例说明。

示例一

假设我们要爬取《阿拉丁》电影海报,可以使用以下代码:

import os
import requests
from bs4 import BeautifulSoup

url = 'https://movie.douban.com/subject/27083561/'   # 阿拉丁电影豆瓣页面

# 获取网页HTML源码
html = requests.get(url, timeout=10).text
bs_obj = BeautifulSoup(html, 'html.parser')

# 空的图片链接列表
img_list = []

# 解析图片链接
for img in bs_obj.find_all('img'):
    img_url = img.get('src')   # 获取图片链接
    if img_url and 'https://img' in img_url and 's_ratio' in img_url:
        img_list.append(img_url)

# 下载图片
for img_url in img_list:
    try:
        res = requests.get(img_url)
        if str(res.status_code)[0] == '4':   # 判断请求是否成功
            print('请求失败:', img_url)
            continue
        with open(os.path.join('./images/', os.path.basename(img_url)), 'wb') as f:
            f.write(res.content)
            print('下载成功:', img_url)
    except Exception as e:
        print('下载失败:', img_url, e)

以上代码会首先访问《阿拉丁》电影的豆瓣页面,然后解析出所有符合条件的图片链接(即链接中包含https://img且包含s_ratio),并将其保存到img_list列表中。接下来,使用requestsos模块,依次将每个海报图片保存到本地的./images/路径下,并在下载成功后打印下载成功的提示信息,如果下载失败则打印下载失败的提示信息。

示例二

假设我们要爬取一个图片分享网站的某个图片分类下的所有图片,可以使用以下代码:

import os
import requests
from bs4 import BeautifulSoup

url = 'https://www.example.com/category/pictures'   # 替换成对应的图片分类页

# 获取网页HTML源码
html = requests.get(url, timeout=10).text
bs_obj = BeautifulSoup(html, 'html.parser')

# 空的图片链接列表
img_list = []

# 解析图片链接
for img in bs_obj.find_all('img'):
    img_url = img.get('src')   # 获取图片链接
    if img_url and 'http' in img_url and '.jpg' in img_url:
        img_list.append(img_url)

# 下载图片
for img_url in img_list:
    try:
        res = requests.get(img_url)
        if str(res.status_code)[0] == '4':   # 判断请求是否成功
            print('请求失败:', img_url)
            continue
        with open(os.path.join('./images/', os.path.basename(img_url)), 'wb') as f:
            f.write(res.content)
            print('下载成功:', img_url)
    except Exception as e:
        print('下载失败:', img_url, e)

以上代码会首先访问指定的图片分类页,然后解析出所有图片链接,仅保留链接中包含http且包含.jpg的图片链接,并将其保存到img_list列表中。接下来,使用requestsos模块,依次将每个图片保存到本地的./images/路径下,并在下载成功后打印下载成功的提示信息,如果下载失败则打印下载失败的提示信息。

注意事项

在使用代码进行爬取时,需要注意网站的版权和隐私政策,尊重网站的规定,不要进行违法和不道德的行为,遵循良好的爬虫规范。同时,由于一些网站可能会采取反爬虫措施,我们需要根据具体情况对代码进行相应的修改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3简单爬虫抓取网页图片代码实例 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 浅谈Scrapy网络爬虫框架的工作原理和数据采集

    浅谈Scrapy网络爬虫框架的工作原理和数据采集 Scrapy框架概述 Scrapy是一个基于Python的高级网络爬虫框架,它的设计初衷是为了提高网络爬取效率和性能。同时,Scrapy支持多种数据提取和存储方式,包括JSON、XML和CSV等数据格式以及MySQL、MongoDB等多种数据存储方式。 Scrapy框架的工作原理 Scrapy的工作原理和其他…

    python 2023年5月14日
    00
  • 使用python的pandas库读取csv文件保存至mysql数据库

    使用Python的pandas库读取CSV文件并保存至MySQL数据库需要经历以下步骤: 1. 安装依赖 在开始之前,需要先安装相关依赖库,包括pandas和MySQLdb。可以通过以下命令进行安装: pip install pandas pip install MySQL-python 2. 导入依赖 在Python脚本中导入需要使用的依赖库: impor…

    python 2023年6月3日
    00
  • 利用python绘制中国地图(含省界、河流等)

    下面是关于“利用python绘制中国地图(含省界、河流等)”的一份完整攻略。 安装必要的库 绘制地图需要安装maplotlib和basemap库。 pip install matplotlib pip install basemap 获取地图数据 我们可以从GADM网站下载中国地图数据。地图数据包括省界、县界、河流等信息,我们可以按需选择需要的信息。 我们选…

    python 2023年5月19日
    00
  • python使用tomorrow实现多线程的例子

    下面是详细讲解使用Tomorrow实现Python多线程的攻略。 什么是Tomorrow Tomorrow是一个Python库,它允许在Python应用程序中异步执行函数和方法调用。Tomorrow可以帮助我们使用多线程,多进程和协程来提升应用程序的性能。 安装Tomorrow 使用pip安装Tomorrow库: pip install tomorrow 使…

    python 2023年5月18日
    00
  • 日常反反爬虫

    这里介绍几种工作中遇到过的常见反爬虫机制及应对策略。 爬虫的君子协议 有些网站希望被搜索引擎抓住,有些敏感信息网站不希望被搜索引擎发现。 网站内容的所有者是网站管理员,搜索引擎应该尊重所有者的意愿,为了满足以上等等,就需要提供一种网站和爬虫进行沟通的途径,给网站管理员表达自己意愿的机会。有需求就有供应,robots协议就此诞生。 scrapy是默认遵守rob…

    爬虫 2023年4月12日
    00
  • Python脚本提取fasta文件单序列信息实现

    Python脚本提取fasta文件单序列信息是生物信息学研究中常用的功能之一。以下是实现该功能的完整攻略: 1. 准备工作 首先需要安装Python编程环境,推荐使用Anaconda或Miniconda来搭建Python环境,因为它们自带了实用的科学计算包和生物信息学包,如NumPy、Pandas、Biopython等。 安装好Python环境后,需要安装B…

    python 2023年6月3日
    00
  • Python使用ElementTree美化XML格式的操作

    关于“Python使用ElementTree美化XML格式的操作”,以下是详细的攻略。 简述 在Python中使用ElementTree模块解析和处理XML文件,常常需要将解析出来的XML格式进行美化,以便更好地阅读和管理。一般而言,按照XML文件的层次结构进行美化就可以了,每个节点应当增加缩进,以便看出层次关系。下面的攻略就是针对这个问题展开的。 美化XM…

    python 2023年6月3日
    00
  • Python爬取爱奇艺电影信息代码实例

    本文将介绍如何使用Python爬取爱奇艺电影信息的方法。以下是本文将介绍的: 使用requests库发送HTTP请求 使用BeautifulSoup库解析页面内容 爬取爱奇艺电影信息 示例说明 使用requests库发送HTTP请求 在Python中,我们可以使用requests库发送HTTP请求。以下是使用requests库发送HTTP请求的示例代码: i…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部