Python爬虫实战:利用代理IP爬取百度翻译

news2024/11/26 21:30:26

文章目录

  • 一、爬取目标
  • 二、环境准备
  • 三、代理IP获取
    • 3.1 爬虫和代理IP的关系
    • 3.2 巨量IP介绍
    • 3.3 超值企业极速池推荐
    • 3.4 IP领取
    • 3.5 代码获取IP
  • 四、爬虫代码实战
    • 4.1分析网页
    • 4.2 寻找接口
    • 4.3 参数构建
    • 4.4 完整代码

一、爬取目标

本次目标网站:百度翻译(https://fanyi.baidu.com/),输入一个关键词后返回翻译结果:

二、环境准备

Python:3.10

编辑器:PyCharm

第三方模块,自行安装:

pip install requests # 网页数据爬取

三、代理IP获取

由于百度翻译限制很严,为了能正常获取数据这里必须使用到代理IP。

3.1 爬虫和代理IP的关系

爬虫和代理IP之间的关系是相互依存的。代理IP为爬虫提供了绕过IP限制、隐藏真实IP、提高访问速度等能力,使得爬虫能够更有效地进行数据抓取。然而,在使用时也需要注意合法性、稳定性、成本以及隐私保护等问题。

3.2 巨量IP介绍

巨量IP提供免费HTTP代理IP和长效静态IP、短效IP、动态IP代理、隧道代理等服务,支持按时、按量、按时按量3种计费方式,根据业务场景需求,让套餐的选择变得更灵活:巨量IP官网

3.3 超值企业极速池推荐

博主经常写爬虫代码使用的是巨量IP家的企业极速池,每日500万去重IP,单IP低至0.005元 (按量计费),并且充值加赠50%,不得不说真的很香:

经常使用爬虫的小伙伴推荐使用IP时效:1分钟的套餐性价比超高。

3.4 IP领取

巨量IP还提供每日1000个免费IP供大家使用:代理IP免费领取

3.5 代码获取IP

1、点击产品管理找到我们 购买或者领取 的套餐:

2、将自己电脑的IP添加为白名单能获取代理IP,点击授权信息:

3、依次点击修改授权》快速添加》确定

4、添加完成后,点击生成提取链接:

5、设置每次提取的数量,点击生成链接,并复制链接:

6、将复制链接,复制到地址栏就可以看到我们获取到的代理IP了:

7、代理获取IP(注意:下面url需要换成你的链接):

import requests
import time
import random


def get_ip():
    url = "这里放你自己的API链接"
    while 1:
        try:
            r = requests.get(url, timeout=10)
        except:
            continue

        ip = r.text.strip()
        if '请求过于频繁' in ip:
            print('IP请求频繁')
            time.sleep(1)
            continue
        break
    proxies = {
        'https': '%s' % ip
    }

    return proxies



if __name__ == '__main__':
    proxies = get_ip()
    print(proxies)

获取成功:

四、爬虫代码实战

4.1分析网页

在翻译栏左侧输入内容,并不需要刷新网页,翻译结果可实时返回,说明该翻译网站为进行Ajax加载的网站:

Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页内容的技术。它通过在后台与服务器交换数据,并允许网页异步更新,从而提升了用户体验。

4.2 寻找接口

1、鼠标右击》检查》选择XHR,输入翻译内容,找到对应的翻译接口:

2、找到接口网址(https://fanyi.baidu.com/sug)和请求方式(Post请求):

3、可以看到携带的参数就是我们输入的内容:

4.3 参数构建

下面代码构建一个携带参数的post请求:

# 1. 百度接口链接  
post_url = 'https://fanyi.baidu.com/sug'  
# 2. 创建post请求携带的参数,将手动输入需要翻译的单词传进去  
data = {  
'kw': kw  
}  
# 3. 携带请求头  
headers = {  
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51'}  
# 使用post 请求(和get类似)  
data_json = requests.post(url=post_url, data=data, headers=headers).json()

4.4 完整代码

注意下面代码需要修改 get_ip() 函数中 url 添加你自己的代理IP接口url(防止被识别到为爬虫):

import requests
import time


def get_ip():
    url = "这里换成自己的代理IP接口url"
    while 1:
        try:
            r = requests.get(url, timeout=10) #
        except:
            continue

        ip = r.text.strip()
        if '请求过于频繁' in ip:
            print('IP请求频繁')
            time.sleep(1)
            continue
        break
    proxies = {
        'https': '%s' % ip
    }

    return proxies



def get_data(kw):
    # 1. 百度接口链接
    post_url = 'https://fanyi.baidu.com/sug'
    # 2. 创建post请求携带的参数,将手动输入需要翻译的单词传进去
    data = {
        'kw': kw
    }
    # 3. 携带请求头
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51'}
    # 4. 获取代理IP
    proxies = get_ip()
    # 使用post 请求
    data_json = requests.post(url=post_url, data=data, headers=headers,proxies=proxies).json()
    # print(data_json)
    for key in data_json['data'][0]:
        print(key, data_json['data'][0][key])


def main():
    while True:
        # 手动输入需要翻译的单词
        kw = input("请输入需要翻译的单词:")
        get_data(kw)


if __name__ == '__main__':
    main()

可以看到中文翻译为英文,英文翻译为中文都可以轻松实现:

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

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

相关文章

Java I/O (Input/Output)——文件字节流

博客主页:誓则盟约系列专栏:Java SE 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Java I/O 简介 Java I/O(输入/输出)是 Java 程序中…

抖音ip地址怎么换到别的地方

在数字化时代,抖音作为一款风靡全球的短视频社交平台,让我们的生活充满了无限乐趣与创意。然而,有时我们可能希望自己的抖音能够显示一个不同于当前所在地的IP地址,无论是出于隐私保护、还是其他个性化需求。那么,如何…

Linux学习记录(三)-----文件io和标准io的区别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言文件IO和标准IO的区别1.\r和\n的区别2.缓冲2.1缓冲区的概念2.2.缓冲区的分类 3.文件IO和标准IO的区别 前言 文件IO和标准IO的区别 1.\r和\n的区别 \r 回车操作…

无人机之植保机篇

一、什么是植保无人机 植保无人机是用于农林植物保护作业的无人驾驶飞机,该型无人飞机由飞行平台、导航飞控、喷洒机构三部分组成,通过地面遥控器或导航飞控,来实现喷洒作业,可以喷洒药剂、种子、粉剂等。目前国内销售的植保无人机…

【已解决】VSCode连接Linux云服务器,代码写着写着服务器突然挂了是怎么回事?

文章目录 1. 问题描述2. 问题原因3. 解决方法 1. 问题描述 在使用 VSCode 连接远程 Ubuntu 云服务器写代码的时候,感觉越写越卡,代码提示半天出不来,最后更是直接断开连接了: 即使把 VSCode 关了,再重启也没用&#x…

五种IO模型与阻塞IO

个人主页:Lei宝啊 愿所有美好如期而遇 IO本质 我们常说IO就是input,output,也就是输入和输出,但是,他的本质是什么?站在OS角度,站在进程的角度,IO是什么?我们想&#…

申请专利需要准备哪些材料?

申请专利需要准备哪些材料?

代码之外的生存指南——自我营销

你是否有去过酒吧、夜店看过驻场乐队的演出? 你到了那里面听过之后你会发现那些乐队的演唱水平丝毫不亚于原唱的艺术家们,都很有才华; 你有没有想过【为什么这些驻场乐队就只能在那小小的夜店里做驻唱演出,每天疲于奔命&#xff0…

图综述-GGNN详解

A Survey of Geometric Graph Neural Networks:Data Structures, Models and Applications 本文主要介绍了在化学领域的分子设计和预测任务中,如何利用几何图神经网络(Geometric Graph Neural Networks,简称GGNN)来处理具有几何信…

怎样可以撰写出一篇优质软文呢?

现在这个互联网飞速发展的时代,软文推广已经逐渐变成了现在很多企业和品牌的推广宣传方式了,虽然软文推广操作起来很简单,但是想要做好没那么简单,软文稿件的质量和推广的流量更是息息相关。 好的软文不止可以让转化更高&#xff…

不容忽视!猫咪浮毛问题严重,宠物空气净化器教你一招清理

拥有一只可爱的猫咪,无疑是家庭中温馨与欢乐的源泉,但同时,宠物的毛发管理也成为了不少家庭面临的日常挑战。每当家中四处飘散着它们细腻的毛发,尤其是拥抱过后,衣物上不经意间沾满了轻盈的浮毛,宠物们随着…

【Material-UI】按钮组件的限制及解决方法详解

文章目录 一、ButtonBase 组件与禁用状态的限制1. 默认行为:pointer-events: none示例代码 2. 显示 not-allowed 光标的解决方案方法一:纯 CSS 解决方案方法二:DOM 结构变化 3. 工具提示(Tooltip)与禁用状态 二、其他常…

Javascript——原始数据类型的自动装箱

自动装箱 聊个例子介绍例子 聊个例子 ‘asd’.length //这其中是怎么执行的在 JavaScript 中,字符串是原始数据类型(primitive data type),但它们表现得像对象,因为它们有属性和方法。当你对一个字符串使用 .length 属…

原型图绘制技巧

针对于 Axure RP绘图软件。 1、拉辅助线 目的,确定画布大小尺寸从上面和左面的刻度尺上,点击鼠标,拖动,就可以拉出一条线。 2、画布底模设为组件 右键转换为母版,方便后续其他页面使用 3、按钮 按钮字体不要太大&am…

【Material-UI】Button 组件自定义详解

文章目录 一、自定义 Button 组件的基础1. 基于 styled 方法的自定义2. styled 方法详解3. 覆盖默认样式 二、高级自定义技巧1. 主题色彩与调色板2. 无障碍性与响应式设计 三、集成与测试1. 集成到项目中2. 测试自定义样式 四、总结 在使用 Material-UI 开发 Web 应用时&#x…

动态贝叶斯网络DBN介绍

动态贝叶斯网络DBN介绍 1. 引言2. 贝叶斯网络与动态贝叶斯网络2.1 贝叶斯网络简介2.2 动态贝叶斯网络详细介绍2.3 两种网络对比 3. 搭建动态贝叶斯网络的方法3.1 定义网络结构3.2 参数学习3.3 推理3.4 结构学习和参数学习的方法3.4.1 结构学习3.4.2 参数学习 4. 总结5. 参考文献…

【医学影像】无痛安装mamba

去年编辑的一个帖子。摆了一段时间后重新回归,发送一下作为状态分界线。 很癫狂的体验,man,what can i say! issue查看我的狗急跳墙状态 1.确定版本 cuda nvcc -Vpython python --versiontorch pip show torch2.下载对应版本…

电燃灶(电焰灶)、燃气灶、电磁炉,谁更契合中国人的烹饪习惯?

中国人的烹饪文化源远流长,丰富多样的烹饪方式和独特的口味需求造就了对炉灶的严格要求。在现代厨房中,电燃灶(电焰灶)、燃气灶和电磁炉成为了常见的选择。那么,究竟哪一种更适合中国人的烹饪习惯呢? 一、明…

[Paddle] 从零安装 Paddle 框架

1 安装前准备 1.1 安装环境 本机安装环境如下: 运行环境操作系统Ubuntu 22.04.4 LTS (Jammy Jellyfish)CPUIntel Core™ i5-12400显卡NVIDIA GeForce RTX 4090 1.2 验证 GPU 是否为 NVIDIA GPU 在命令行输入以下代码,以验证您的 GPU 是否是 NVIDIA …

零基础报考软考只是为了证书,应该报考初级还是中级呢?

证书的价值仍然非常吸引人~ 软考不仅是技术水平考核,也是评定职称资格的考试,是评定职称的主要条件。国有企业和事业单位的员工可以凭借软考中级以上的证书申请中级职称、副高级职称或者高级职称。此外,软考对于提升职位和加薪有着重要的作用…