import requests from bs4 import BeautifulSoup import os def download_images(keyword, num_images): url = f"https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word={keyword}&ct=201326592&v=flip" response = requests.get(url) soup = BeautifulSoup(response.content, "html.parser") img_tags = soup.find_all("img", class_="main_img img-hover") # 创建一个目录来保存图片 os.makedirs(keyword, exist_ok=True) count = 0 for img_tag in img_tags: if count == num_images: break img_url = img_tag["src"] try: # 下载图片 response = requests.get(img_url) with open(f"{keyword}/{count+1}.jpg", "wb") as f: f.write(response.content) count += 1 print(f"Downloaded image {count}/{num_images}") except: print(f"Failed to download image {count+1}") keyword = "香蕉" # 搜索的关键词 num_images = 20 # 要下载的图片数 download_images(keyword, num_images)只创建了目录没有下载图片
时间: 2024-04-15 15:24:40 浏览: 59
python调试文件时发生import requests报错.doc
5星 · 资源好评率100%
根据你提供的代码,创建目录的部分是正确的,但下载图片的逻辑中可能存在问题。以下是一些可能导致无法下载图片的原因和解决方案:
1. 图片URL问题:百度图片的图片URL可能会经常变动,导致无法正确下载图片。可以尝试使用其他图片网站,或者使用更稳定的图片URL获取方式。
2. 图片请求问题:有些网站可能对爬虫进行限制,导致无法正常请求图片。你可以尝试添加一些请求头信息,来模拟正常的浏览器请求。例如,设置User-Agent头部可以让请求看起来更像是来自浏览器。
可以尝试将以下代码添加到`requests.get()`请求中:
```python
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"
}
response = requests.get(img_url, headers=headers)
```
这样可以模拟使用Chrome浏览器发送请求,可能会绕过一些反爬虫机制。
3. 异常处理问题:目前代码中的异常处理逻辑比较简单,只是简单地打印出错误信息。你可以尝试更详细地处理异常,以便排查问题。例如,打印完整的错误信息或使用`logging`库记录错误日志,这样可以更好地了解出现问题的具体原因。
请注意,图片下载可能涉及到网站的使用协议和法律规定,请确保你的下载行为符合法律和网站规定。
阅读全文