首页 前端知识 Python爬虫示例:下载图片和视频(带注释)

Python爬虫示例:下载图片和视频(带注释)

2025-03-18 12:03:00 前端知识 前端哥 403 55 我要收藏

🌟 嗨,我是Lethehong!🌟

🌍 立志在坚不欲说,成功在久不在速🌍

🚀 欢迎关注:👍点赞⬆️留言收藏🚀

🍀欢迎使用:小智初学计算机网页AI🍀


完整python代码

前言

以下是一个简单的Python爬虫示例,用于从网页中爬取图片和视频内容。该代码旨在帮助用户理解如何使用Python进行网络爬虫操作,特别是在下载图片和视频文件时的基本方法。

代码包含详细注释,解释了每个部分的功能和用途。请务必遵守目标网站的robots.txt协议,并确保所有操作符合相关法律法规。

代码包含详细注释说明,**请务必遵守目标网站的`robots.txt`协议及相关法律法规**

```python
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

目标网站示例(请替换为实际需要爬取的网站

BASE_URL = "https://example.com"  # 示例网站,实际使用时请替换
SAVE_DIR = "./downloads"  # 文件保存路径

创建保存目录

os.makedirs(SAVE_DIR, exist_ok=True)

设置请求头(模拟浏览器访问)

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}

def download_file(url, filename):

通用文件下载函数

    try:
        response = requests.get(url, headers=headers, stream=True)
        if response.status_code == 200:
            filepath = os.path.join(SAVE_DIR, filename)
            with open(filepath, 'wb') as f:
                for chunk in response.iter_content(chunk_size=1024):
                    if chunk:
                        f.write(chunk)
            print(f"下载成功: {filename}")
    except Exception as e:
        print(f"下载失败 {url}: {str(e)}")def scrape_media():

主爬虫函数

1. 获取网页内容

try:
response = requests.get(BASE_URL, headers=headers)
response.raise_for_status()  # 检查请求是否成功

2. 解析HTML

soup = BeautifulSoup(response.text, 'html.parser')

3. 爬取图片(示例:查找所有img标签)

        for img_tag in soup.find_all('img'):
            img_url = img_tag.get('src')
            if img_url:
                # 处理相对路径
                full_img_url = urljoin(BASE_URL, img_url)
                filename = os.path.basename(full_img_url)
                download_file(full_img_url, f"img_{filename}")

4. 爬取视频(示例:查找video标签或包含视频链接的元素)
        注意:视频链接可能隐藏在source标签或JavaScript中

        for video_tag in soup.find_all('video'):
            video_url = video_tag.get('src')
            if not video_url:
                source_tag = video_tag.find('source')
                if source_tag:
                    video_url = source_tag.get('src')
            
            if video_url:
                full_video_url = urljoin(BASE_URL, video_url)
                filename = os.path.basename(full_video_url)
                download_file(full_video_url, f"video_{filename}")

    except requests.exceptions.RequestException as e:
        print(f"请求错误: {str(e)}")
    except Exception as e:
        print(f"发生错误: {str(e)}")

if __name__ == "__main__":
    # 法律声明(实际使用时必须遵守)
    print("注意:本代码仅用于学习交流,请确保:")
    print("1. 遵守目标网站的robots.txt协议")
    print("2. 不侵犯任何版权内容")
    print("3. 控制请求频率避免对服务器造成压力\n")
    
    scrape_media()
    print("爬取任务完成")
```

代码解释

1. 基础设置
   `BASE_URL`: 需要爬取的目标网站地址(示例使用`example.com`,实际需要替换)
   `SAVE_DIR`: 文件保存路径,自动创建目录
   `headers`: 设置浏览器标识,避免被网站屏蔽

2. 下载函数 `download_file()`
   使用流式下载(`stream=True`)节省内存
   支持大文件分块下载(`iter_content`)
   异常处理确保程序稳定性

3. 主函数 `scrape_media()`
   发送HTTP请求并检查状态码
   使用BeautifulSoup解析HTML
   图片爬取逻辑:
             查找所有`<img>`标签
             处理相对路径(`urljoin`)
             自动生成唯一文件名

   视频爬取逻辑:
             查找`<video>`及其嵌套的`<source>`标签
             处理更复杂的视频链接场景

4. 安全注意事项
   程序开始时显示法律声明
   使用`try-except`处理网络请求异常
   控制下载频率(示例未添加,但实际使用时建议添加延时)

扩展建议

1.反爬措施处理

   ```python
   # 在headers中添加更多信息
   headers = {
       "User-Agent": "...",
       "Referer": BASE_URL,
       "Accept-Language": "en-US,en;q=0.9"
   }

   # 设置请求间隔
   import time
   time.sleep(1)  # 每次请求后暂停1秒
   ```

2. 动态内容处理
   对于JavaScript渲染的页面,可使用Selenium

   ```python
   from selenium import webdriver
   driver = webdriver.Chrome()
   driver.get(BASE_URL)
   soup = BeautifulSoup(driver.page_source, 'html.parser')
   ```

3. 分页爬取

   ```python
   for page in range(1, 6):  # 爬取前5页
       url = f"{BASE_URL}/page/{page}"
       response = requests.get(url, headers=headers)
       # 后续处理...
   ```

法律风险提示

务必确认目标网站允许爬取相关内容
不得爬取敏感信息或受版权保护的内容
遵守`robots.txt`协议(查看方式:`https://目标网站/robots.txt`)

总结 

通过以上代码,我们展示了如何使用Python从网页中爬取图片和视频文件。该代码首先导入必要的库,设置目标网站地址和保存路径,然后定义一个通用下载函数,接着在主爬虫函数中分别处理图片和视频的下载。

需要注意的是,网络爬虫操作可能会对目标服务器造成一定的压力,因此建议在实际使用前控制请求频率,并遵守相关法律法规。确保所有爬取行为符合目标网站的规定,以及不侵犯任何版权内容。

希望这个代码能够为您提供帮助,如果有任何问题或需要进一步优化,请随时联系我!

建议在实际使用前咨询法律专业人士,确保程序合法合规。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/24007.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!