> 技术文档 > Python爬虫示例:下载图片和视频(带注释)_python爬虫教程download

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

🌟 嗨,我是Lethehong!🌟

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

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

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


完整python代码

前言

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

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

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

```pythonimport osimport requestsfrom bs4 import BeautifulSoupfrom 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
   图片爬取逻辑:
             查找所有``标签
             处理相对路径(`urljoin`)
             自动生成唯一文件名

   视频爬取逻辑:
             查找`

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从网页中爬取图片和视频文件。该代码首先导入必要的库,设置目标网站地址和保存路径,然后定义一个通用下载函数,接着在主爬虫函数中分别处理图片和视频的下载。

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

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

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