🌟 嗨,我是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从网页中爬取图片和视频文件。该代码首先导入必要的库,设置目标网站地址和保存路径,然后定义一个通用下载函数,接着在主爬虫函数中分别处理图片和视频的下载。
需要注意的是,网络爬虫操作可能会对目标服务器造成一定的压力,因此建议在实际使用前控制请求频率,并遵守相关法律法规。确保所有爬取行为符合目标网站的规定,以及不侵犯任何版权内容。
希望这个代码能够为您提供帮助,如果有任何问题或需要进一步优化,请随时联系我!
建议在实际使用前咨询法律专业人士,确保程序合法合规。