您的位置:首页 > 科技 > IT业 > 北京做网站找哪家好_成都网站制作网站设计_网络营销推广流程_wordpress企业网站模板

北京做网站找哪家好_成都网站制作网站设计_网络营销推广流程_wordpress企业网站模板

2025/3/6 23:15:08 来源:https://blog.csdn.net/u014164303/article/details/146052450  浏览:    关键词:北京做网站找哪家好_成都网站制作网站设计_网络营销推广流程_wordpress企业网站模板
北京做网站找哪家好_成都网站制作网站设计_网络营销推广流程_wordpress企业网站模板

文章目录

  • 前言
  • 1. 环境准备
    • 1.1Python安装
    • 1.2选择Python开发环境
    • 1.3安装必要库
  • 2. 编写爬虫代码
  • 3. 代码解释
  • 4. 注意事项
  • 5. 进阶优化


前言

以下是一个使用 Python 编写爬虫来抓取网页图片的详细教程,将以requests库发送 HTTP 请求,BeautifulSoup库解析 HTML 页面为例进行介绍。


1. 环境准备

1.1Python安装

访问 Python 官方网站,根据你的操作系统(Windows、Mac 或 Linux)下载并安装 Python 3.x 版本。安装时勾选 “Add Python to PATH”,方便在命令行中使用 Python。

Python 3.11安装教程:https://blog.csdn.net/u014164303/article/details/145549489
Python 3.13安装教程:https://blog.csdn.net/u014164303/article/details/146024500

Python 3.11下载地址:https://pan.quark.cn/s/9c44793cb24c
Python 3.13下载地址:https://pan.quark.cn/s/bce37ebd7f70

1.2选择Python开发环境

PyCharm 社区版(免费)或专业版(需付费或申请教育版)。安装完成后,打开 PyCharm,创建一个新的项目,在项目设置中选择之前创建的虚拟环境作为项目的 Python 解释器。PyCharm 功能强大,提供代码自动补全、调试等功能,适合开发大型项目。

Pycharm安装教程:https://blog.csdn.net/u014164303/article/details/145674773
PyCharm下载地址:https://pan.quark.cn/s/5756c8cf8b2a

1.3安装必要库

在开始之前,你需要安装requests和beautifulsoup4库。可以使用以下命令进行安装:

pip install requests beautifulsoup4

2. 编写爬虫代码

import requests
from bs4 import BeautifulSoup
import os# 定义要抓取的网页 URL
url = 'https://example.com'  # 替换为实际要抓取的网页 URL# 定义保存图片的文件夹
save_folder = 'downloaded_images'
if not os.path.exists(save_folder):os.makedirs(save_folder)# 发送 HTTP 请求获取网页内容
try:response = requests.get(url)response.raise_for_status()  # 检查请求是否成功
except requests.RequestException as e:print(f"请求网页时出错: {e}")
else:# 使用 BeautifulSoup 解析 HTML 内容soup = BeautifulSoup(response.text, 'html.parser')# 查找所有的图片标签img_tags = soup.find_all('img')for img in img_tags:# 获取图片的 src 属性img_url = img.get('src')if img_url:# 处理相对 URLif not img_url.startswith('http'):img_url = url.rsplit('/', 1)[0] + '/' + img_urltry:# 发送请求下载图片img_response = requests.get(img_url)img_response.raise_for_status()# 提取图片文件名img_filename = os.path.join(save_folder, img_url.split('/')[-1])# 保存图片到本地with open(img_filename, 'wb') as f:f.write(img_response.content)print(f"成功下载图片: {img_filename}")except requests.RequestException as e:print(f"下载图片 {img_url} 时出错: {e}")

3. 代码解释

  • 导入必要的库:requests库用于发送 HTTP 请求,BeautifulSoup库用于解析 HTML 页面,os库用于处理文件和文件夹操作。
    定义要抓取的网页 URL 和保存图片的文件夹:将url替换为你实际要抓取的网页 URL,代码会自动创建一个名为downloaded_images的文件夹来保存下载的图片。
  • 发送 HTTP 请求:使用requests.get()方法发送 GET 请求获取网页内容,并使用raise_for_status()方法检查请求是否成功。
  • 解析 HTML 内容:使用BeautifulSoup解析 HTML 内容,查找所有的标签。
    处理图片 URL:获取每个标签的src属性,处理相对 URL 使其成为完整的 URL。
    下载图片:发送请求下载图片,并将图片内容保存到本地文件中。

4. 注意事项

反爬虫机制:许多网站都有反爬虫机制,可能会对频繁的请求进行限制或封禁 IP。为了避免这种情况,可以设置合适的请求头(如User-Agent),模拟浏览器行为,或者设置适当的请求间隔时间。

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'}
response = requests.get(url, headers=headers)

图片链接有效性:有些图片链接可能是无效的或者指向其他资源,代码中已经进行了简单的错误处理,但在实际应用中可能需要更完善的处理逻辑。
法律合规:在进行网页抓取时,要确保遵守相关法律法规和网站的使用条款,不要进行非法或未经授权的抓取行为。

5. 进阶优化

如果需要处理动态加载的图片(例如使用 JavaScript 动态加载的图片),可以使用Selenium库结合浏览器驱动来模拟浏览器行为,获取完整的页面内容。以下是一个简单的示例:

from selenium import webdriver
from bs4 import BeautifulSoup
import requests
import os# 定义要抓取的网页 URL
url = 'https://example.com'  # 替换为实际要抓取的网页 URL# 定义保存图片的文件夹
save_folder = 'downloaded_images'
if not os.path.exists(save_folder):os.makedirs(save_folder)# 创建浏览器驱动实例
driver = webdriver.Chrome()  # 需要安装 Chrome 浏览器和对应的 ChromeDrivertry:# 打开网页driver.get(url)# 获取页面源代码page_source = driver.page_source# 使用 BeautifulSoup 解析 HTML 内容soup = BeautifulSoup(page_source, 'html.parser')# 查找所有的图片标签img_tags = soup.find_all('img')for img in img_tags:# 获取图片的 src 属性img_url = img.get('src')if img_url:# 处理相对 URLif not img_url.startswith('http'):img_url = url.rsplit('/', 1)[0] + '/' + img_urltry:# 发送请求下载图片img_response = requests.get(img_url)img_response.raise_for_status()# 提取图片文件名img_filename = os.path.join(save_folder, img_url.split('/')[-1])# 保存图片到本地with open(img_filename, 'wb') as f:f.write(img_response.content)print(f"成功下载图片: {img_filename}")except requests.RequestException as e:print(f"下载图片 {img_url} 时出错: {e}")
except Exception as e:print(f"发生错误: {e}")
finally:# 关闭浏览器driver.quit()

以上代码使用Selenium库打开网页,获取完整的页面源代码,然后再进行图片的抓取和下载。需要注意的是,使用Selenium需要安装对应的浏览器驱动(如 ChromeDriver)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com