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. 内容整合与创新:将来自不同网站的相关内容整合在一起,创造出新的服务或产品。比如,新闻聚合应用可以通过爬虫收集多个新闻网站的内容,为用户提供一站式的新闻阅读体验。
    • 一些知识分享平台也会利用爬虫获取各类知识资源,经过整理后以更清晰和有条理的方式呈现给用户。

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

相关推荐

  1. Python-数据爬虫

    2024-07-22 18:54:02       17 阅读
  2. Python-数据爬虫

    2024-07-22 18:54:02       17 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 18:54:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 18:54:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 18:54:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 18:54:02       55 阅读

热门阅读

  1. 交换机(Switches)和桥(Bridges)的区别

    2024-07-22 18:54:02       15 阅读
  2. 测试面试宝典(二十一)—— get和post的区别

    2024-07-22 18:54:02       14 阅读
  3. ESP8266AT指令查看有哪些指令可用(3)

    2024-07-22 18:54:02       13 阅读
  4. Oracle(15)什么是索引(Index)?

    2024-07-22 18:54:02       14 阅读
  5. CSS 的@media规则,响应式的一种解决方案

    2024-07-22 18:54:02       12 阅读