首页 > 编程知识 正文

Python爬取图片保存到本地

时间:2023-11-19 01:30:29 阅读:291088 作者:MHFJ

这篇文章将从以下几个方面详细讲解如何使用Python爬取图片并保存到本地。

一、环境准备

在使用Python进行爬虫编程之前,我们需要先安装requests库和beautifulsoup4库。其中,requests库用来发送HTTP请求获取页面数据,beautifulsoup4库用来解析HTML页面数据。

pip install requests
pip install beautifulsoup4

二、获取图片链接

在爬虫程序中,首先需要做的就是获取图片链接。获取图片链接的方法有很多种,这里我们以解析HTML页面为例来获取图片链接。

下面是一个获取图片链接的例子:

import requests
from bs4 import BeautifulSoup

url = 'https://www.example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')

img_urls = []
for img in img_tags:
    img_url = img.get('src')
    if img_url:
        img_urls.append(img_url)

上述代码中,我们首先使用requests库发送HTTP请求获取页面数据,然后使用beautifulsoup4库解析HTML页面数据。在获取图片标签后,我们通过遍历所有图片标签来获取其对应的图片链接。最后将所有图片链接保存在img_urls列表中。

三、下载图片

获取到图片链接之后,接下来我们需要将其下载到本地。下载图片的方法也有多种,这里我们以使用requests库下载图片为例。

下面是一个下载图片的例子:

import requests

for img_url in img_urls:
    response = requests.get(img_url, stream=True)
    if response.status_code == 200:
        with open('image.jpg', 'wb') as f:
            for chunk in response.iter_content(1024):
                f.write(chunk)

上述代码中,我们遍历所有图片链接并使用requests库发送HTTP请求下载对应图片。我们使用response.iter_content()方法来批量下载图片。最后将对应图片保存在本地文件夹中。

四、完整代码

下面是完整的Python爬取图片保存到本地的代码示例:

import requests
from bs4 import BeautifulSoup

def get_img_urls(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    img_tags = soup.find_all('img')

    img_urls = []
    for img in img_tags:
        img_url = img.get('src')
        if img_url:
            img_urls.append(img_url)
    return img_urls

def download_img(img_url):
    response = requests.get(img_url, stream=True)
    if response.status_code == 200:
        with open('image.jpg', 'wb') as f:
            for chunk in response.iter_content(1024):
                f.write(chunk)

if __name__ == '__main__':
    url = 'https://www.example.com'
    img_urls = get_img_urls(url)
    for img_url in img_urls:
        download_img(img_url)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。