Python爬虫之网页图片抓取的方法

yizhihongxing

Python爬虫之网页图片抓取的方法

在Python爬虫中,网页图片的抓取是一项基本任务。下面介绍网页图片抓取的方法和实例。

1. 查找图片链接

在抓取图片前,需要先找到图片对应的链接。可以通过BeautifulSoup库和正则表达式进行图片链接的查找。

1.1 使用BeautifulSoup库查找图片链接

使用BeautifulSoup库可以方便地在网页中查找图片链接。下面是一个例子:

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "https://example.com"
html = urlopen(url)
soup = BeautifulSoup(html, "html.parser")
img_links = []
for img in soup.findAll("img"):
    link = img.get("src")
    if link:
        if "http" in link:
            img_links.append(link)
        else:
            img_links.append(url + link)
print(img_links)

以上代码首先使用urlopen函数打开网页,然后使用BeautifulSoup库将网页内容转化为soup对象。接下来在soup对象中查找所有img标签,获取其中的src属性值,并将其添加到img_links列表中。

1.2 使用正则表达式查找图片链接

如果不能使用BeautifulSoup库,那么可以使用正则表达式进行图片链接的查找。下面是一个例子:

from urllib.request import urlopen
import re

url = "https://example.com"
html = urlopen(url)
img_links = re.findall('<img src="(.+?)"', html.read().decode())
img_links = [url + link if "http" not in link else link for link in img_links]
print(img_links)

以上代码首先使用urlopen函数打开网页,然后使用正则表达式查找img标签中的src属性值,并添加到img_links列表中。注意需要对非完整链接进行额外处理。

2. 下载图片

在获取到图片链接后,就可以使用Python下载图片。可以使用requests库或者urllib库进行图片的下载。

2.1 使用requests库下载图片

使用requests库可以方便地下载图片。下面是一个例子:

import requests

url = "https://example.com/image.jpg"
r = requests.get(url)
with open("image.jpg", "wb") as f:
    f.write(r.content)

以上代码首先使用requests库的get函数获取图片的二进制数据,然后使用with语句将二进制数据保存到文件中。

2.2 使用urllib库下载图片

使用urllib库可以通过urlretrieve函数下载图片。下面是一个例子:

from urllib.request import urlretrieve

url = "https://example.com/image.jpg"
urlretrieve(url, "image.jpg")

以上代码使用urlretrieve函数下载图片,并使用指定的文件名进行保存。

示例说明

现在有一个需要下载图片的网页,网页地址为 https://www.baidu.com/。我们想要下载该网页中所有的图片,并将其保存到本地。

使用BeautifulSoup库和requests库可以实现该功能。完整代码如下:

from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests

url = "https://www.baidu.com/"
html = urlopen(url)
soup = BeautifulSoup(html, "html.parser")
img_links = []
for img in soup.findAll("img"):
    link = img.get("src")
    if link:
        if "http" in link:
            img_links.append(link)
        else:
            img_links.append(url + link)

for link in img_links:
    r = requests.get(link)
    with open(link.split("/")[-1], "wb") as f:
        f.write(r.content)

以上代码首先使用urlopen函数打开网页,然后使用BeautifulSoup库将网页内容转化为soup对象。接下来在soup对象中查找所有img标签,获取其中的src属性值,并将其添加到img_links列表中。最后使用requests库下载图片,并使用图片文件名进行保存。

使用正则表达式和urlretrieve函数可以实现该功能。完整代码如下:

from urllib.request import urlopen, urlretrieve
import re

url = "https://www.baidu.com/"
html = urlopen(url)
img_links = re.findall('<img src="(.+?)"', html.read().decode())
img_links = [url + link if "http" not in link else link for link in img_links]

for link in img_links:
    urlretrieve(link, link.split("/")[-1])

以上代码首先使用urlopen函数打开网页,然后使用正则表达式查找img标签中的src属性值,并添加到img_links列表中。最后使用urlretrieve函数下载图片,并使用图片文件名进行保存。

以上两个例子分别使用了不同的方式查找图片链接和下载图片,但其思路基本相同。在实际应用中,可以根据需要选择适当的方式进行编写。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫之网页图片抓取的方法 - Python技术站

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

相关文章

  • 10分钟用python搭建一个超好用的CMDB系统

    下面我为你详细讲解如何用Python搭建一个CMDB系统。 1. 准备工作 在开始构建CMDB系统之前,你需要先安装好Python 3.x和一个web框架,比如Django或Flask。本例中,我们将使用Django框架。 2. 创建数据库 在Django中,可以使用ORM(对象关系映射)来管理数据库,这意味着我们可以使用Python类来代表数据库中的表格。…

    python 2023年5月14日
    00
  • Postman安装与使用详细教程 附postman离线安装包

    Postman 安装与使用详细教程 Postman 是一款流行的 API 开发工具,可以帮助开发者快速测试和调试 API 接口。以下是 Postman 的安装与使用详细教程。 1. 下载 Postman 首先,我们需要从 Postman 官网下载适合自己操作系统的安装包。可以访问 https://www.postman.com/downloads/ 下载最新…

    python 2023年5月15日
    00
  • python计算时间差的方法

    下面是详细讲解“python计算时间差的方法”的完整攻略,包含两个示例: Python计算时间差的方法 在Python中,我们可以使用datetime库来计算时间差。具体步骤如下: 步骤1:导入datetime库 from datetime import datetime 步骤2:定义起始时间和结束时间 我们可以使用datetime类来定义起始时间和结束时间…

    python 2023年6月2日
    00
  • Python面经之16个高频面试问题总结

    Python面经之16个高频面试问题总结 在Python的面试中,有一些问题是经常被问到的。本文将总结16个高频面试问题,并提供详细的答和示例说明,帮助读者更好地准备面试。 1. Python中的GIL是什么? GIL(Global Interpreter)是Python解释器中的一个全局锁,它保证同一时刻只有一个线程在执行Python字节码。这意味着多程环…

    python 2023年5月13日
    00
  • 16行Python代码实现微信聊天机器人并自动智能回复功能

    我们先来看一下实现微信聊天机器人并自动智能回复的大致思路: 使用itchat库登录微信账号获取itchat对象; 编写消息回复的函数; 监听用户发送的消息,并调用消息回复函数进行回复。 接下来按照这个思路来详细讲解“16行Python代码实现微信聊天机器人并自动智能回复功能”的完整攻略。 步骤1:使用itchat库登录微信账号获取itchat对象 首先,需要…

    python 2023年5月19日
    00
  • Python使用scrapy采集数据时为每个请求随机分配user-agent的方法

    Python使用scrapy采集数据时,为了防止被网站识别为爬虫而被封禁,需要经常更换请求头中的user-agent字段,使得数据请求看起来像是来自真实的浏览器。本文将介绍如何使用scrapy实现为每个请求随机分配user-agent的方法。 前置知识 在了解方法之前,需要掌握基础的scrapy知识,包括scrapy的基本用法、pipeline的作用、Scr…

    python 2023年6月3日
    00
  • Redis 如何实现订阅/发布模式(pub/sub)?

    当多个客户端需要实时接收某个频道的消息时,Redis 提供了订阅/发布模式(pub/sub)来实现这个功能。本文将详细讲解 Redis 如何实现订阅/发布模式,包括实现原理和使用攻略。 Redis 订阅/发布模式的实现原理 Redis 订阅/发布模式的实现原理主要包括以下几个方面: 订阅:客户端向 Redis 发送订阅请求,Redis 将请求作为一个 key…

    python 2023年5月12日
    00
  • 十个Python中常用的pip命令总结

    十个Python中常用的pip命令总结 pip 是 Python 的官方软件包安装工具,可以很方便地管理 Python 包和依赖项。以下是十个常用的 pip 命令的总结。 1. 安装软件包 用以下命令安装软件包: pip install package_name 示例:安装名为 requests 的软件包 pip install requests 2. 卸载…

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