下面是详细的Python实现简单网页图片抓取完整代码实例攻略:
在开发网站时,可能需要从某个网站抓取图片来丰富内容和美化页面,本文将介绍如何使用Python实现简单网页图片抓取,帮助大家快速抓取所需图片。
在进行Python实现简单网页图片抓取之前,需要准备好以下环境:
使用 pip 命令安装 requests 和 BeautifulSoup 库:
pip install requests
pip install beautifulsoup4
首先需要进行页面分析,确定需要抓取的图片所在的标签和属性。比如我们要抓取的图片是在 img 标签中,其 src 属性存放了图片的链接地址。
使用 requests 库发送 GET 请求获取页面内容,同时可以加上一些请求头信息,以免请求被网站拦截。
import requests
url = 'https://www.example.com'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
res = requests.get(url, headers=headers)
其中 headers 部分可以根据实际情况修改,如果需要模拟登录等操作,则需要在 headers 中添加相应的信息。
使用 BeautifulSoup 库解析页面内容,可以定位需要抓取的图片所在的标签和属性,进而获取图片链接地址。
from bs4 import BeautifulSoup
soup = BeautifulSoup(res.text, 'html.parser')
img_tags = soup.find_all('img')
for img in img_tags:
print(img['src'])
其中,soup.find_all('img') 表示找到 HTML 中所有的 'img' 标签,并返回一个列表。通过遍历这个列表,可以获取每个 img 标签的 src 属性,即图片链接地址。
获取图片链接后,可以使用 requests 库将图片下载到本机上。也可以根据实际需要修改代码,将图片保存到指定的位置或数据库中。
import os
img_url = 'https://www.example.com/image.jpg'
img_name = os.path.basename(img_url)
with open(img_name, 'wb') as f:
f.write(requests.get(img_url).content)
print('图片保存成功!')
以上代码将图片二进制数据保存到本地文件中,文件名使用了 os.path.basename() 函数获取网络图片的文件名,并与保存路径一同写入到打开的文件中。
当我们需要从一个页面中抓取单个图片时,可以按照以上步骤将图片下载到本地。
import requests
from bs4 import BeautifulSoup
import os
url = 'https://www.example.com'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
img_tags = soup.find_all('img')
img_url = img_tags[0]['src']
img_name = os.path.basename(img_url)
with open(img_name, 'wb') as f:
f.write(requests.get(img_url).content)
print('图片保存成功!')
当我们需要从一个页面中抓取多个图片时,可以将获取链接和下载图片的过程封装成函数,再通过循环遍历所有的图片链接来进行批量下载。
import requests
from bs4 import BeautifulSoup
import os
def download_img(img_url):
img_name = os.path.basename(img_url)
with open(img_name, 'wb') as f:
f.write(requests.get(img_url).content)
print('图片保存成功!')
url = 'https://www.example.com'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
img_tags = soup.find_all('img')
for img in img_tags:
img_url = img['src']
download_img(img_url)
通过以上示例,我们可以将抓取单个图片和抓取多个图片的过程熟练掌握,并根据实际需求进行应用。