当前位置: 首页 > news >正文

用python写一个爬虫,爬取google中关于蛇的照片

为了爬取Google中关于蛇的照片,我们可以利用Python中的第三方库进行网页解析和HTTP请求。请注意,这种爬取行为可能违反Google的使用条款,因此建议在合法和允许的情况下使用。以下是一个基本的Python爬虫示例,使用Requests库发送HTTP请求,并使用Beautiful Soup库解析HTML内容。

爬虫实现步骤
1.安装所需库:
使用 pip 安装 requests 和 beautifulsoup4 库。

pip install requests beautifulsoup4

2.编写爬虫代码:
下面是一个简单的Python脚本,用于从Google搜索中获取蛇的图片链接。请注意,由于Google的页面结构经常更改,所以此代码可能需要根据实际情况进行调整。

import requests
from bs4 import BeautifulSoup
import re
import osdef fetch_google_images(query, num_images):# 替换空格为加号,构建搜索URLquery = query.replace(' ', '+')url = f"https://www.google.com/search?q={query}&tbm=isch"# 发送HTTP GET请求headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}response = requests.get(url, headers=headers)response.raise_for_status()# 解析HTML内容soup = BeautifulSoup(response.text, 'html.parser')# 提取所有图片链接image_links = []for img in soup.find_all('img'):image_link = img.get('src')if image_link:# 过滤掉base64编码的图片和空链接if not image_link.startswith('data:image'):image_links.append(image_link)# 下载图片download_images(image_links[:num_images], query)def download_images(image_links, query):# 创建目录存储图片if not os.path.exists(query):os.makedirs(query)# 下载图片并保存到本地for i, link in enumerate(image_links):try:response = requests.get(link)response.raise_for_status()# 提取文件扩展名_, ext = os.path.splitext(link)ext = ext.split('?')[0]  # 处理链接中的查询参数# 保存图片filename = os.path.join(query, f"{i+1}{ext}")with open(filename, 'wb') as f:f.write(response.content)print(f"Downloaded {filename}")except Exception as e:print(f"Failed to download {link}. Error: {str(e)}")if __name__ == "__main__":query = "snake"  # 搜索关键词num_images = 10  # 要下载的图片数量fetch_google_images(query, num_images)

3.爬虫说明
fetch_google_images 函数负责发送HTTP GET请求到Google图片搜索页面,并使用Beautiful Soup解析页面内容,提取图片链接。
download_images 函数负责下载图片并保存到本地目录。
User-Agent 头部是模拟浏览器的一部分,有助于避免被服务器拒绝访问(HTTP 403错误)。
注意事项
合法性和使用政策:请遵循Google的使用政策和法律法规,确保你的爬取行为合法。
页面结构变化:Google的页面结构可能会经常更改,导致爬虫代码需要调整或更新。
爬取速率:请注意爬取速率,避免对目标服务器造成过大的负载,也避免被封IP或屏蔽访问。
记得要遵守网络服务提供商的使用条款和法律法规,以免产生法律问题。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • OpenLayers学习笔记-点位聚合
  • python爬虫豆瓣电影TOP250
  • FakeNewsGPT4:通过知识增强的大规模视觉语言模型推进多模态假新闻检测
  • Python和C++骨髓细胞进化解析数学模型
  • prometheus+grafana应用监控配置
  • 基于springboot+vue+uniapp的超市购物系统小程序
  • 【Java--数据结构】二叉树oj题(上)
  • Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验
  • LeetCode 92. 反转链表 II
  • Hi3861 OpenHarmony嵌入式应用入门--华为 IoTDA 设备接入
  • 堆、栈和队列(数据结构)
  • PGCCC|【PostgreSQL】PCA+PCP+PCM等IT类认证申报个税退税指南
  • 【mysql】02在ubuntu24安装并配置mysql
  • 【区块链 + 智慧政务】澳门:智慧城市建设之证书电子化项目 | FISCO BCOS应用案例
  • 单元测试有什么好处呢?
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 4. 路由到控制器 - Laravel从零开始教程
  • HashMap ConcurrentHashMap
  • js继承的实现方法
  • Laravel Mix运行时关于es2015报错解决方案
  • mysql_config not found
  • Vue官网教程学习过程中值得记录的一些事情
  • web标准化(下)
  • 关于for循环的简单归纳
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 如何解决微信端直接跳WAP端
  • 如何设计一个比特币钱包服务
  • 推荐一个React的管理后台框架
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 学习Vue.js的五个小例子
  • 赢得Docker挑战最佳实践
  • ​520就是要宠粉,你的心头书我买单
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2015)JS ES6 必知的十个 特性
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (SERIES12)DM性能优化
  • (附源码)计算机毕业设计ssm电影分享网站
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)认识微服务
  • (译)计算距离、方位和更多经纬度之间的点
  • (转载)虚函数剖析
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net core使用ef 6
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • @vue/cli 3.x+引入jQuery
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [].slice.call()将类数组转化为真正的数组
  • []串口通信 零星笔记
  • [51nod1610]路径计数
  • [7] CUDA之常量内存与纹理内存