Python 爬虫(爬取百度翻译的数据)

前言

要保证爬虫的合法性,可以从以下几个方面着手:

  1. 遵守网站的使用条款和服务协议:在爬取数据之前,仔细阅读目标网站的相关规定。许多网站会在其 robots.txt 文件中明确说明哪些部分可以爬取,哪些不可以。
    • 例如,一些网站可能允许有限的爬取,但禁止大规模或频繁的抓取。
  2. 尊重版权和知识产权:不爬取受版权保护的内容,除非有明确的授权。
    • 比如,未经授权爬取受版权保护的文章、图片或其他作品是不合法的。
  3. 避免对网站造成损害:控制爬取的频率和速度,以防止对目标网站的服务器造成过度负担,影响其正常运行。
    • 假设一个小型网站每秒只能处理 10 个请求,而爬虫每秒发送 100 个请求,就可能导致网站瘫痪。
  4. 不获取敏感信息:严格遵守法律法规,不爬取个人隐私、金融信息等敏感数据。
    • 比如,用户的银行账户信息、身份证号码等属于敏感信息,获取这些是违法的。
  5. 遵循数据保护法规:特别是在处理个人数据时,要符合相关的数据保护法规,如欧盟的《通用数据保护条例》(GDPR)等。
    • 例如,在欧洲,如果没有合法的依据和用户的明确同意,获取和处理个人数据是不允许的。
  6. 获得必要的授权:如果数据的获取和使用需要授权,应提前获取相应的许可。
    • 比如,某些专业数据库或付费内容,需要获得授权才能爬取和使用。

总之,合法使用爬虫需要谨慎、尊重规则和法律,并始终以负责任和道德的方式进行操作。

一、百度翻译的数据

 

使用百度翻译了hello的意思,然后我们右键打开检查,点击网络,我们看到有好多个sug参数,它把hello分成了sug-h,sug-e...这样去翻译,每点击一个sug都是不同的意思,最后一个才是sug-hello。然后在右边的预览中,就可以看到这是一个json数据,把hello翻译是结果用json格式返回。

再来看这个图片,在负载中我们可以看到有表单数据,然后里面有一个kw的参数,参数的值是什么呢,就是我们输入的hello.

 

再看这个标头里面的内容,就有这个访问的url,并且发起的请求方式是post.Content-Type: application/json可以得出请求的返回值为json格式,

 二、代码示例

1.下载request包,可以在vscode的terminal中输入下载
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
2.代码示例
# 导入了 requests 库,用于发送 HTTP 请求和处理响应。
import requests# 定义了一个名为 spider 的函数,它接受三个参数:url(要请求的网址)、headers(请求头信息)和 data(要发送的数据)。
def spider(url,headers,data):# 使用 requests.post 方法向指定的 url 发送一个 POST 请求,携带给定的 headers 和 data 。然后将响应内容转换为 JSON 格式并赋值给 response 变量。response = requests.post(url=url, headers=headers, data=data).json()  # 对目标url发起post请求for key in response['data'][0]:print(key,response['data'][0][key])# 遍历 response 中 data 列表的第一个元素的键,并打印每个键以及对应的值。# 定义了 main 函数。
def main():# 定义了一个字符串变量 url ,并赋值为百度翻译的搜索建议接口的网址。url = 'https://fanyi.baidu.com/sug'  #需要请求的url# 定义了一个字典 headers 用于进行用户代理(User-Agent)的伪装。headers = {  #进行UA伪装'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.56'}while True:  #使程序进入死循环# 获取用户输入的单词,并将其赋值给变量 kw 。kw = input("输入需要查询的单词:")# 创建一个字典 data ,其中包含键值对 'kw': kw ,即用户输入的单词。data = {     #post请求携带的参数'kw':kw}# 调用 spider 函数,并传递当前的 url、headers 和 data 作为参数。spider(url=url,headers=headers,data=data)  #调用自定义函数spider# 当这个脚本被直接运行时,会执行 main 函数。
if __name__ == '__main__':main()

# 这段代码定义了一个爬虫程序,用于向百度翻译的搜索建议接口发送请求并获取结果。
# spider 函数接受 url、headers 和 data 作为参数,使用 requests.post 方法发送请求,并将响应解析为 JSON 格式。然后遍历响应中 data[0] 部分的键值对并打印出来。
# main 函数定义了目标 url 和 headers,通过一个无限循环获取用户输入的单词,将其作为 data 中的参数,调用 spider 函数进行请求和处理。
# 例如,如果您输入“hello”,程序会向百度翻译的接口发送请求,并打印出关于“hello”这个词的相关搜索建议信息。但需要注意的是,这种未经授权的爬取可能违反网站的使用条款和服务协议。

 3.什么是UA 伪装

UA 伪装(User-Agent 伪装)

UA(User-Agent)是 HTTP 协议中的一个字段,它用于向服务器表明发起请求的客户端的信息,包括客户端的操作系统、浏览器类型、版本等。

UA 伪装就是通过修改这个字段的值,来模拟或伪装成其他的客户端类型,从而达到某种目的。

其主要作用包括:

  1. 绕过访问限制:有些网站会根据不同的 UA 来决定是否允许访问或提供不同的内容。通过伪装成合法或受信任的客户端,可能绕过这些限制。
    • 例如,某些网站可能对移动设备和桌面设备提供不同的页面,如果想要获取特定类型的页面,就可以通过修改 UA 来模拟对应的设备。
  2. 避免被识别和封禁:如果大量相同的请求使用相同的 UA,网站可能会识别出这是爬虫行为并进行封禁。通过随机或有策略地修改 UA,可以降低被识别的风险。
    • 假设一个爬虫一直使用相同的 UA 频繁访问网站,网站很容易发现异常并采取措施,而不断变化的 UA 能增加隐蔽性。

在 Python 爬虫中,经常通过设置 headers 中的 User-Agent 字段来实现 UA 伪装。

在标头的最下面就有,直接复制粘贴下来就可以了。

4.运行结果

输入红色也会把相应的数据输出来。 

 三、为什么需要爬虫

爬虫之所以被需要,主要基于以下几个重要原因:

  1. 数据收集与分析:在大数据时代,大量有价值的信息分布在互联网的各个角落。爬虫能够帮助我们自动、高效地收集这些分散的数据,为后续的分析和研究提供基础。例如,市场调研人员可以通过爬虫获取竞争对手的产品信息、价格和用户评价,以便制定更有竞争力的策略。
    • 以电商行业为例,企业可以爬取不同平台上商品的价格、销量和用户反馈,从而了解市场动态和消费者需求。
  2. 学术研究:学者在进行各种研究时,需要大量的数据支持。爬虫可以获取相关领域的文献、研究报告、统计数据等,节省了手动查找和整理的时间。
    • 比如,社会学家可能会爬取社交媒体上的言论来分析公众对某一社会现象的看法。
  3. 监测与预警:能够实时监测特定的网站或信息源,及时发现关键信息的变化。例如,金融机构可以使用爬虫监测股票价格的变动,或者跟踪财经新闻中的重要事件,以便及时做出决策。
    • 对于舆情监测,爬虫可以帮助政府部门或企业及时了解公众对特定话题的态度和情绪变化。
  4. 内容整合与创新:将来自不同网站的相关内容整合在一起,创造出新的服务或产品。比如,新闻聚合应用可以通过爬虫收集多个新闻网站的内容,为用户提供一站式的新闻阅读体验。
    • 一些知识分享平台也会利用爬虫获取各类知识资源,经过整理后以更清晰和有条理的方式呈现给用户。

总之,爬虫作为一种自动化获取数据的工具,在众多领域发挥着重要作用,帮助人们更快速、全面地获取和利用互联网上的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中电金信:AI数据服务

01 方案简介 AI数据服务解决方案为泛娱乐、电子商务、交通出行等行业提供数据处理、数据分析、AI模型训练等服务,通过自主研发的IDSC自动化数据服务平台与客户业务流程无缝衔接,实现超低延时的实时数据处理支持。 02 应用场景 智能医疗: 通…

深入浅出mediasoup—通信框架

libuv 是一个跨平台的异步事件驱动库,用于构建高性能和可扩展的网络应用程序。mediasoup 基于 libuv 构建了包括管道、信号和 socket 在内的一整套通信框架,具有单线程、事件驱动和异步的典型特征,是构建高性能 WebRTC 流媒体服务器的重要基础…

《javaEE篇》--单例模式详解

目录 单例模式 饿汉模式 懒汉模式 懒汉模式(优化) 指令重排序 总结 单例模式 单例模式属于一种设计模式,设计模式就好比是一种固定代码套路类似于棋谱,是由前人总结并且记录下来我们可以直接使用的代码设计思路。 单例模式就是,在有…

升级python版本

参考 https://blog.51cto.com/u_15579956/10397535 python3 main.py

聚焦保险行业客户经营现状,概述神策数据 CJO 解决方案

触点红利时代,企业的经营需求从「深度的用户行为分析」转变为「个性化、全渠道一致的客户体验」。客户旅程编排(Customer Journey Orchestration,简称 CJO)从体验出发,关注客户需求、感受和满意度,能够帮助…

HarmonyOS Next系列之地图组件(Map Kit)使用(九)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…

「运费速查神器」精明买家必备!一键查询1688供应商发货费用

对于从事跨境买家还是国内电商买家,在选品时,需要全面考虑商品成本,发货费用是供应链成本的重要组成部分。 原来如果我们在1688选品看供应商发货运费,需要一个个单独点击到商品的详情页去查看,再选择具体的收货地、再…

Elastic:监控不同于可观察性的 3 个原因

作者:来自 Elastic Observability Team 监控和可观察性经常互换使用,但它们并不完全相同。监控是可观察性的重要组成部分,但可观察性远远超出了传统监控实践的范围。 关键区别:监控从各个组件收集数据 —— 何时和什么&#xff0…

微信小程序-CANVAS写入图片素材、文字等数据生成图片

微信小程序中,CANVAS写入图片素材、文字等数据生成图片,最终可将生成的 base64 格式图片保存至相册操作 Tips: 1、canvas 标签默认宽度 300px、高度 150px canvas 生成图片时,写入图片素材、文字等数据前,需要根据实…

叶再豪降龙精英课程总结

文章目录 1.思维认知1.1 稻盛和夫成功公式1.2 龙头主升模式1.3 龙头主升-两种路径1.4 股市新手的炒股思路1.5 龙头案例1.6 降龙心法 2.情绪周期2.1 情绪周期2.1 情绪演绎周期2.2 情绪的四个部分2.2.1 指数的情绪周期2.2.3 热点情绪周期2.2.4 热点情绪演绎周期2.2.5 大热点支线2…

深入了解路由器工作原理:从零开始的简单讲解

简介 在现代网络中,路由器扮演着至关重要的角色。它不仅连接了不同的设备,还确保数据能够准确地传输到目的地。本文将带你深入探讨路由器的工作原理,帮助网络基础小白们理解这一重要设备的基本功能。 路由器的构成 路由器是一种具有多个输入…

纷享AI | AI技术在销售场景的应用与实践

AI高速发展的今天,各行业都经历着深刻变革。但机遇与挑战总相伴相生,各企业负责人事实上也正面临着如何有效利用AI以完成赋能销售业务的难题。 毋庸置疑,跟上技术潮流,通过落实AI在销售场景中的应用进而取得卓越赋能成果必然是行…

Android TabLayout的简单用法

TabLayout 注意这里添加tab,使用binding.tabLayout.newTab()进行创建 private fun initTabs() {val tab binding.tabLayout.newTab()tab.text "模板库"binding.tabLayout.addTab(tab)binding.tabLayout.addOnTabSelectedListener(object : TabLayout.On…

深度学习系列一

激活函数 sigmod 梯度消失问题: sigmoid函数的导数在输入值较大或较小时接近于0。在反向传播过程中,这些小梯度会相乘,导致深层网络的梯度变得非常小。结果是,深层网络的参数几乎不会更新,训练变得非常困难。这就是为…

Passing output of 3DCNN layer to LSTM layer

题意:将3DCNN(三维卷积神经网络)层的输出传递给LSTM(长短期记忆网络)层 问题背景: Whilst trying to learn Recurrent Neural Networks(RNNs) am trying to train an Automatic Lip Reading Model using 3…

2024年上半年主要游戏安全风险,该如何应对?

随着游戏行业的蓬勃发展,安全问题也日益成为行业关注的焦点。面对 2024 年上半 年的游戏安全风险挑战,游戏行业需要不断加强技术能力,完善安全策略,与各方共 同努力,打造一个更加安全、公平的游戏环境。 游戏安全解…

前端程序员会演化出类TA岗位吗?

前端开发领域确实在不断演化,随着技术的进步和行业的需求变化,前端程序员的角色和职责也在拓展,这自然催生了一系列相关的专业岗位。以下是一些从前端开发领域分化出来的专业角色,我们可以称之为“类TA”(Technical Ad…

BGP之选路MED

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由。BGP路由属性的比较顺序为Preferred Value属性、Local Preference属性、路由生成方式、AS_Path属性、Origin属…

学习记录——day18 数据结构 树

树的存储 1、顺序存储 对于普通的二叉树,不适合存储普通的二叉树顶序存储,一般用于存储完全二叉树而言,如果使用顺序存储,会浪费大量的存储空间,因为需要给没有节点的位置留出空间,以便于后期的插入。 所以…

20分钟上手新版Skywalking 9.x APM监控系统

Skywalking https://skywalking.apache.org/ Skywalking是专为微服务、云原生和基于容器的(Kubernetes)架构设计的分布式系统性能监控工具。 Skywalking关键特性 ● 分布式跟踪 ○ 端到端分布式跟踪。服务拓扑分析、以服务为中心的可观察性和API仪表板。…