python爬虫抓取图片
时间: 2025-01-02 08:43:54 浏览: 9
### 使用Python编写爬虫抓取网页图片
为了完成这一目标,可以按照以下方法构建一个简单的图像爬虫。此过程涉及几个主要部分:发送HTTP请求、解析HTML文档以及下载并保存图片。
#### 发送HTTP请求
要访问网站并获取其内容,通常会使用`requests`库来发起GET请求。这一步骤对于模拟浏览器行为至关重要,因此设置合适的请求头(headers)也是必要的[^3]。
```python
import requests
url = 'https://example.com/images'
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'
}
response = requests.get(url, headers=headers)
```
#### 解析HTML文档
一旦获得了页面的内容,则需从中提取出所有的图片链接。此时可借助于`BeautifulSoup`这样的工具来进行DOM树的遍历和查询操作[^2]。
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
urls = [img['src'] for img in img_tags]
```
#### 下载并保存图片
最后一步就是根据之前收集到的所有图片URL地址逐个下载它们,并将其存储在本地磁盘上。需要注意的是,在处理相对路径时可能还需要拼接完整的URL。
```python
import os
from urllib.parse import urljoin
def download_image(url):
response = requests.get(url, stream=True)
if response.status_code == 200:
file_name = os.path.basename(urllib.parse.urlparse(url).path)
with open(file_name, 'wb') as f:
for chunk in response.iter_content(1024):
f.write(chunk)
for url in urls:
full_url = urljoin(base_url, url)
download_image(full_url)
```
通过上述代码片段展示了一个基本框架用于从指定网址中抓取所有可见的图片资源,并自动保存至当前工作目录下。当然实际应用过程中还需考虑更多细节问题,例如异常情况下的错误处理机制等。
阅读全文