用request库写网页图片爬取的简洁实用代码,要求可搜索符合要求的图片进行保存,每行代码后面进行文字解释
时间: 2024-10-19 14:06:23 浏览: 27
Python爬虫爬取一个网页上的图片地址实例代码
在Python中,我们可以使用requests库来发送HTTP请求,BeautifulSoup库来解析HTML内容,以及PIL库来处理图片。下面是一个简单的示例,展示如何编写一个基本的图片爬虫,用于搜索并下载指定关键字的图片:
```python
import requests
from bs4 import BeautifulSoup
from PIL import Image
import os
# 定义目标关键词和保存路径
keyword = "猫"
save_path = "images/"
def download_images(url):
# 发送GET请求获取页面内容
response = requests.get(url)
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有img标签,通常包含图片链接
img_tags = soup.find_all('img', src=True)
for tag in img_tags:
try:
# 获取图片链接
img_url = tag['src']
# 检查是否包含关键字,可以添加正则表达式或其他匹配策略
if keyword.lower() in img_url.lower():
# 下载图片
image_data = requests.get(img_url).content
# 将二进制数据转换为Image对象
img = Image.open(BytesIO(image_data))
# 保存图片到文件,文件名保留原URL中的信息
filename = os.path.join(save_path, os.path.basename(img_url))
img.save(filename)
print(f"Downloaded and saved {filename}")
except Exception as e:
print(f"Error processing image: {str(e)}")
# 调用函数,爬取百度图片作为示例
download_images("https://image.baidu.com/search/index?tn=baiduimage&word={keyword}&ct=201326592&lm=-1&cl=2&fr=&fmq=1689754921379_R&icase=1&nc=1&zid=0&f=jpg%2Cwebp&rn=10&gsm=1&ipn=r&ctabid=0&width=0&height=0&face=0&istype=2&ie=utf-8")
```
这个脚本会访问给定的搜索结果页,查找其中包含目标关键字的图片,并将其保存到本地。请注意,实际使用时可能需要处理反爬机制,如验证码、IP限制等。此外,这只是一个基础示例,实际应用中可能需要根据网站结构进行调整。
阅读全文