下面是一个使用Python抓取网页中图片的基本示例。这个示例将使用`requests`库来获取网页内容,并使用`BeautifulSoup`库来解析HTML并找到图片链接。然后,使用`requests`再次下载这些图片到本地。
首先,确保你已经安装了`requests`和`beautifulsoup4`库。如果没有安装,可以通过pip安装它们:
pip install requests beautifulsoup4
然后,你可以使用以下Python脚本来抓取网页中的图片:
import requests
from bs4 import BeautifulSoup
import os
def download_images(url, save_folder='images'):
# 确保保存图片的文件夹存在
if not os.path.exists(save_folder):
os.makedirs(save_folder)
# 获取网页内容
response = requests.get(url)
response.raise_for_status() # 如果请求失败,则抛出HTTPError异常
# 解析网页
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有的<img>标签
images = soup.find_all('img')
# 遍历图片并下载
for img in images:
src = img.get('src') # 获取图片的URL
if src: # 确保src属性存在
# 构造完整的图片URL(如果src是相对路径)
if not src.startswith(('http://', 'https://')):
# 这里假设网站域名是固定的,实际情况可能需要从<base>标签或其他方式获取
src = f"http://example.com/{src}"
# 下载图片
image_response = requests.get(src)
image_response.raise_for_status() # 如果下载失败,则抛出HTTPError异常
# 构造本地文件名(这里简单使用URL的最后一部分)
filename = os.path.join(save_folder, os.path.basename(src))
# 保存图片到本地
with open(filename, 'wb') as file:
file.write(image_response.content)
print(f'Downloaded {filename}')
# 示例:抓取某个网页的图片
download_images('http://example.com/some-page-with-images')
**注意**:
- 示例中的`http://example.com/`是一个占位符,你需要将其替换为实际的网页URL。
- 如果图片URL是相对路径,你可能需要构造完整的URL。这通常涉及到获取网页的基URL(可以从`
- 示例中简单地使用URL的最后一部分作为文件名,这可能会导致文件名冲突。在实际应用中,你可能需要实现更复杂的命名策略。
- 示例代码没有处理重定向、HTTPS证书验证等问题,你可能需要根据实际情况进行调整。