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