python爬取百度图片
时间: 2023-09-09 11:05:17 浏览: 142
### 回答1:
可以使用Python中的requests和BeautifulSoup库来爬取百度图片。以下是一个简单的示例代码:
```python
import requests
from bs4 import BeautifulSoup
import os
# 搜索关键词
keyword = "猫"
# 创建文件夹用于存放图片
if not os.path.exists(keyword):
os.mkdir(keyword)
# 请求百度图片搜索结果页面
url = "https://image.baidu.com/search/index?tn=baiduimage&word=" + keyword
response = requests.get(url)
# 解析页面内容,获取图片链接
soup = BeautifulSoup(response.content, "html.parser")
img_tags = soup.find_all("img")
# 下载图片
for i, img_tag in enumerate(img_tags):
img_url = img_tag.attrs.get("src")
if img_url and "http" in img_url:
img_name = keyword + "_" + str(i) + ".jpg"
img_path = os.path.join(keyword, img_name)
with open(img_path, "wb") as f:
f.write(requests.get(img_url).content)
```
运行代码后,会在当前目录下创建一个名为`猫`的文件夹,并将搜索结果中的图片下载到该文件夹中。你可以将`keyword`变量改为其他关键词进行搜索。注意,爬取百度图片需要遵守百度的相关规定和法律法规,不要用于商业用途。
### 回答2:
要用Python爬取百度图片,我们可以使用requests库发送HTTP请求,并使用BeautifulSoup库解析HTML页面。以下是一个简单的示例:
1. 导入所需的库:
```python
import requests
from bs4 import BeautifulSoup
```
2. 定义一个函数来获取百度图片的URL:
```python
def get_image_urls(keyword, num_images):
url = f'https://image.baidu.com/search/flip?tn=baiduimage&word={keyword}&pn=0&tn=pc'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
image_urls = []
for img in img_tags:
if len(image_urls) == num_images:
break
image_urls.append(img['src'])
return image_urls
```
该函数接受两个参数:要搜索的关键词和要获取的图片数量。它首先构建了百度图片搜索的URL,然后发送GET请求并解析响应的HTML页面。接下来,它找到所有的<img>标签,并提取它们的src属性,将图片的URL添加到image_urls列表中,直到达到所需的图片数量。
3. 调用函数并下载图片:
```python
def download_images(image_urls):
for i, url in enumerate(image_urls):
response = requests.get(url)
with open(f'image_{i}.jpg', 'wb') as file:
file.write(response.content)
```
该函数接受一个包含图片URL的列表,并使用requests库下载每个图片。每个图片以'image_序号.jpg'的格式保存在本地。
4. 在主程序中使用上述函数:
```python
if __name__ == '__main__':
keyword = '猫'
num_images = 10
image_urls = get_image_urls(keyword, num_images)
download_images(image_urls)
```
在主程序中,我们指定了要搜索的关键词和要获取的图片数量,并调用get_image_urls函数获取百度图片的URL。然后,我们将URL列表传递给download_images函数,下载并保存图片。
以上就是使用Python爬取百度图片的基本过程。请注意,爬取网站内容要遵守相关网站的使用条款和法律法规。
### 回答3:
Python爬取百度图片可以使用第三方库requests和BeautifulSoup来实现。
首先,我们需要导入需要的库:requests和BeautifulSoup。
```python
import requests
from bs4 import BeautifulSoup
```
然后,我们可以定义一个函数来获取百度图片的链接:
```python
def get_image_urls(keyword):
# 设置搜索关键字
search_url = "https://image.baidu.com/search/index?tn=baiduimage&word=" + keyword
# 发送GET请求
response = requests.get(search_url)
# 使用BeautifulSoup解析获取到的html页面
soup = BeautifulSoup(response.text, 'html.parser')
# 获取所有的img标签
img_tags = soup.find_all('img')
# 提取每个img标签中的src属性,即图片链接,并将其添加到一个列表中
image_urls = []
for img in img_tags:
image_urls.append(img['src'])
return image_urls
```
接下来,我们可以定义一个函数来下载百度图片:
```python
def download_images(keyword, num_images):
# 获取图片链接
image_urls = get_image_urls(keyword)
# 创建一个用于保存图片的文件夹
folder_path = "./images/"
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# 下载并保存图片
counter = 1
for url in image_urls:
if counter > num_images:
break
try:
response = requests.get(url)
with open(folder_path + keyword + str(counter) + ".jpg", 'wb') as f:
f.write(response.content)
print("成功下载第" + str(counter) + "张图片")
counter += 1
except:
print("下载第" + str(counter) + "张图片失败")
```
最后,我们可以调用download_images函数来下载指定数量的图片:
```python
keyword = "猫"
num_images = 10
download_images(keyword, num_images)
```
以上就是使用Python爬取百度图片的简单示例。你可以根据自己的需求修改关键字和下载图片的数量。
阅读全文