用python编一个下载Baidu图片的爬虫程序
时间: 2024-06-09 07:12:03 浏览: 167
BaiduImage_爬虫_python_百度图片_
好的,以下是一个简单的Python程序,可以爬取百度图片搜索结果的图片,并将其下载到本地。请确保您已经安装了requests和beautifulsoup4库。
```python
import requests
from bs4 import BeautifulSoup
import os
def download_image(url, save_path):
# 发送请求,获取图片数据
response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
image_data = response.content
# 保存图片
with open(save_path, 'wb') as f:
f.write(image_data)
def main():
# 搜索关键词
keyword = 'dog'
# 搜索结果页面的url
search_url = f'https://image.baidu.com/search/index?tn=baiduimage&word={keyword}'
# 发送请求,获取搜索结果页面数据
response = requests.get(search_url, headers={'User-Agent': 'Mozilla/5.0'})
html = response.text
# 解析搜索结果页面
soup = BeautifulSoup(html, 'html.parser')
img_tags = soup.find_all('img', class_='main_img')
# 创建保存图片的目录
save_dir = 'images'
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 下载图片
for i, img_tag in enumerate(img_tags):
img_url = img_tag['src']
save_path = os.path.join(save_dir, f'{keyword}_{i}.jpg')
download_image(img_url, save_path)
print(f'Downloaded image {i}')
if __name__ == '__main__':
main()
```
在程序中,我们首先定义了一个`download_image`函数,用于下载图片。该函数接受两个参数:图片的url和本地保存路径。函数会发送请求,获取图片数据,然后将其保存到本地。
接着,我们定义了一个`main`函数,用于爬取百度图片搜索结果。在函数中,我们首先定义了搜索关键词和搜索结果页面的url。然后,我们发送请求,获取搜索结果页面数据,并用BeautifulSoup解析页面。通过查看百度图片搜索结果页面的源代码,我们可以发现每张图片都包含一个`img`标签,且其class属性为`main_img`。因此,我们使用`soup.find_all`方法找到所有class为`main_img`的`img`标签,然后遍历这些标签,获取每张图片的url,并调用`download_image`函数下载图片。
最后,我们在程序的`__main__`部分调用`main`函数,启动程序。当程序运行结束后,您可以在`images`目录下找到下载的图片。
阅读全文