7篇Python爬虫实例,直接代码可运行,全网最全,注释超详细(适合收藏)——2、爬取图片信息。

7篇Python爬虫实例,可直接运行,适合收藏

python爬虫7篇实例,分七个文章进行发布;第二篇:爬取图片信息。

  • 爬取图片信息,并将每张图片都下载下来。

爬虫主要三部分:

1、获取数据

2、数据解析

3、调用函数

  • 先上完整代码: 代码后面进行一步步解析。
python 复制代码
import requests
from bs4 import BeautifulSoup
import os

index = range(2,5)
urls = []
for i in index:
    urls.append(f'https://pic.netbian.com/4kdongman/index_{i}.html')

# https://pic.netbian.com/tupian/34851.html

# 传入单个网页,获取网页上所有得图片链接
def craw_single_url(url):
    re = requests.get(url)
    re.encoding = 'gbk'
    soup = BeautifulSoup(re.text,'html.parser')
    pics_links = soup.find_all('img')
    links = []
    for link in pics_links:
        if 'uploads' not in link['src']:
            continue
        links.append(f'https://pic.netbian.com{link['src']}')
    return links

# 传入图片链接,将图片下载到文件夹中
def imgs_download(links):
    for link in links:
        re = requests.get(link)
        pic_name = os.path.basename(link)
        with open(f'图片/{pic_name}','wb') as f:   # w : 写入 b : 二进制写入
            f.write(re.content)

# 循环爬取的网页链接,将所有网页的 links 放入元组中
links = []
for url in urls:
    for link in craw_single_url(url):
        links.append(link)

# 将所有的 link 图片下载下来
imgs_download(links)

1、获取数据

  • 该函数是获取该 url 链接下所有图片的链接
  • 函数返回值是:所有图片的链接
python 复制代码
def craw_single_url(url):
    re = requests.get(url)          # 请求 url
    re.encoding = 'gbk'             # gbk格式
    soup = BeautifulSoup(re.text,'html.parser')     # 创建一个 BeautifulSoup 对象,之后对其解析
    pics_links = soup.find_all('img')                       # 在soup 中找到 img 的链接
    links = []
    for link in pics_links:                                 # 循环每个链接
        if 'uploads' not in link['src']:                    # 判断是否正确的链接
            continue
        links.append(f'https://pic.netbian.com{link['src']}')   # 构建真正的图片链接
    return links

2、数据解析

  • 对获取到的图片 urls 进行解析
  • 循环 urls 下载图片到指定文件中
python 复制代码
def imgs_download(links):                       # 下载图片函数
    for link in links:                          # 对传入图片链接进行循环
        re = requests.get(link)                 # 请求单个链接
        pic_name = os.path.basename(link)       # 获得图片的名字
        with open(f'图片/{pic_name}','wb') as f: # 打开 图片 文件夹进行写入 w : 写入 b : 二进制写入
            f.write(re.content)                 # 将图片保存到 图片 文件夹

3、进行调用

python 复制代码
# 循环爬取的网页链接,将所有网页的 links 放入元组中
links = []              
for url in urls:                        # 循环每个页面
    for link in craw_single_url(url):   # 将每个页面得到的图片urls,放入 links列表   
        links.append(link)              # 放入 links列表   

# 将所有的 link 图片下载下来
imgs_download(links)                    # 再调用 imgs_download 函数,对每张图片进行下载
相关推荐
小徐不徐说3 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ragnwang4 小时前
Notes: Python pybind11 import C++ module
开发语言·c++·python
王中阳Go4 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
Wang's Blog4 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象3274 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
weixin_307779135 小时前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
Dxy12393102165 小时前
JS DES 加密详解
开发语言·javascript·arcgis
充值内卷5 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
云和数据.ChenGuang5 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
nice_lcj5206 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试