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

news2024/9/22 11:34:00

前言

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

  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.coloradmin.cn/o/1944892.html

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

相关文章

Java语言程序设计基础篇_编程练习题**15.19 (游戏:手眼协调)

**15.19 (游戏:手眼协调) 请编写一个程序,显示一个半径为10像素的实心圆,该圆放置在面板上的随机位置,并填充随机的顔色,如图15-29b所示。单击这个圆时,它会消失,然后在另一个随机的位置显示新的随机颜色的…

PySimpleGUI的安装、使用介绍

PySimpleGUI的安装等介绍 如果直接使用pip命令是无法下载免费版的,通过设置的python Interpreter也不可以下载到5.0.0之前的版本了。 现在已经无法通过pycharm直接获取到PySimpleGUI的免费(无需登录)版,不过听说可以登入官网然后进…

OpenTeleVision复现及机器人迁移

相关信息 标题 Open-TeleVision: Teleoperation with Immersive Active Visual Feedback作者 Xuxin Cheng1 Jialong Li1 Shiqi Yang1 Ge Yang2 Xiaolong Wang1 UC San Diego1 MIT2主页 https://robot-tv.github.io/链接 https://robot-tv.github.io/resources/television.pdf代…

JavaWeb连接(JDBC)数据库实现增删改查

JavaWeb连接(JDBC)数据库实现增删改查 1、数据库结构 (1)、创建数据库(source_db) (2)、创建数据表(tb_source),结构如下 字段名说明字段类型长度备注id编号int主键,自增,增量为 1name名称v…

通过Docker安装KingbaseES V8并激活开发License

人大金仓最大连接数的修改跟pgsql差不多,就是修改kingbase.conf文件,修改里面的max_connections 10 ,有时候会发现修改后不成功的问题,最直接的表现就是在修改后重启服务,控制台还是提示重置为10,最大的原…

区块链浏览器开发指南分享

01 概括 区块链浏览器是联盟链上的一种数据可视化工具,用户可以通过web页面,直接在浏览器上查看联盟链的节点、区块、交易信息和子链信息、标识使用信息等,用以验证交易等区块链常用操作。 02功能模块 区块链网络概览 区块链网络概览显示…

leetcode日记(47)螺旋矩阵Ⅱ

这题思路不难,就是找规律太难了。 我首先的思路是一行一行来,根据规律填入下一行的数组,第i行是由前i个数字(n-2*i)个增序数列后i个数字组成,后来觉得太难找规律了就换了一种思路。 思路大致是先计算出需…

【音视频之SDL2】Ubuntu编译配置SDL2环境

文章目录 前言SDL2 是什么编译SDL2下载必备的包下载SDL2.30.5源码 编写CMake模板项目测试代码 总结 前言 SDL2(Simple DirectMedia Layer 2)是一个用于开发跨平台多媒体应用程序的广泛使用的库,特别是在游戏开发中。它为音频、键盘、鼠标、操…

pageoffice常见问题处理

pageoffice是由卓正软件公司开发的一套在线编辑office的插件。要在自己的系统中使用,需要进行集成开发,把pageoffice嵌入到自己的系统中。以下记录在使用过程中常见的问题和解决方法: 1.PageOffice对客户端的要求 office 不能是家庭版&#x…

【区块链+绿色低碳】基于区块链的碳排放管理系统 | FISCO BCOS应用案例

目前业内的碳排放核查方式主要依靠于第三方人工核查、手动填报数据,然后由具备有认证资质的机构进行核验 盖章。但在此过程中存在数据造假的情况,给碳排放量核算的准确性、可靠性带来挑战。 中科易云采用国产开源联盟链 FISCO BCOS,推出基于…

【时序约束】读懂用好Timing_report

一、静态时序分析: 静态时序分析(Static Timing Analysis)简称 STA,采用穷尽的分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求&a…

SpringBoot原理——面试高频

目录 1.什么是起步依赖? 2.起步依赖如何工作? 3.什么是自动配置? 4.自动配置原理 1.什么是起步依赖? 起步依赖是Spring Boot中的一个概念,它实质上是一个Maven项目对象模型(POM),…

1 go语言环境的搭建

本专栏将从基础开始,循序渐进,由浅入深讲解Go语言,希望大家都能够从中有所收获,也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方,请指正!大家一起学习,…

IT服务管理业务策划与实施:追求IT用户满意与持续改进

在当今的信息化时代,IT服务已成为企业运营不可或缺的一部分。有效的IT服务管理不仅能够提升企业运营效率,还能显著增强IT用户满意度。本文将围绕IT服务管理的业务策划与实施展开探讨,旨在为运维团队提供一套全面、系统的参考框架。 一、IT服…

AI在候选人评估中的作用:精准筛选与HR决策的助力

一、引言 随着科技的迅猛发展,人工智能(AI)技术已逐渐渗透到各个行业和领域,人力资源管理(HRM)亦不例外。在候选人评估的环节中,AI技术以其高效、精准的特性,正在逐步改变着传统的招…

el-table表格 及其el-pagination分页 封装及其使用

1、首页在components文件夹中新建table文件夹 table文件夹下table.vue全部代码&#xff1a; <template><el-table:stripe"stripe":row-key"handlerRowKey()":tree-props"treeProps":border"border":show-summary"showS…

Vue3相比于Vue2进行了哪些更新

1、响应式原理 vue2 vue2中采用 defineProperty 来劫持整个对象&#xff0c;然后进行深度遍历所有属性&#xff0c;给每个属性添加getter和setter&#xff0c;结合发布订阅模式实现响应式。 存在的问题&#xff1a; 检测不到对象属性的添加和删除数组API方法无法监听到需要对…

蓝桥杯单片机学习总结(Day15 超声波测距)

开启超声波模块测距方法&#xff1a; X20106A是一款红外线检波接收的专用芯片&#xff0c;常用于电视机红外遥控接收器。当CX20106A接收到40KHz的信号时&#xff08;第五脚200K的电阻决定了其频率为40KHz&#xff09;&#xff0c;会在OUT脚输出一个低电平下降脉冲。这个信号甚至…

IDEA打开终端报错Cannot open Local Terminal命令行功能

idea项目中不能打开命令行功能 IDEA打开终端报错Cannot open Local Terminal 意思是打开命令行发生错误 idea上配置shell终端&#xff0c;命令行页面 打开右上角 File–> setting–> Tools–> 终端 找到Shell 路径 文本框中原本是是powershell.exe&#xff0c;现在…

Java | Leetcode Java题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; public class Solution extends VersionControl {public int firstBadVersion(int n) {int left 1, right n;while (left < right) { // 循环直至区间左右端点相同int mid left (right - left) / 2; // 防止计算时溢出if (isBadVers…