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

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

一、爬取目标

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

image.png

二、环境准备

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官网

image.png

3.3 超值企业极速池推荐

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

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

3.4 免费IP领取

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

image.png

3.5 代码获取IP

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

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

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

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

image.png

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

image.png

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

image.png

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)

获取成功:
image.png

四、爬虫代码实战

4.1分析网页

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

image.png

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

4.2 寻找接口

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

image.png

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

image.png

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

image.png

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()

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

五、总结

代理IP对于爬虫是密不可分的,代理IP可以安全采集公开数据信息,有需要代理IP的小伙伴可以试试巨量家的超值企业极速池:巨量IP官网

相关文章
|
14天前
|
数据采集 JSON 算法
Python爬虫——基于JWT的模拟登录爬取实战
Python爬虫——基于JWT的模拟登录爬取实战
37 1
Python爬虫——基于JWT的模拟登录爬取实战
|
16天前
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
43 0
|
7天前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
19 1
|
8天前
|
调度 开发者 Python
探索Python中的异步编程:从基础到实战
【10月更文挑战第9天】在Python的世界中,异步编程是一个让开发者既能提升应用性能又能保持代码可读性的强大工具。本文将带你一探究竟,从理解异步编程的基本概念开始,到深入剖析其背后的原理,再到通过实际代码示例掌握其应用技巧。无论你是异步编程的新手还是希望深化理解的老手,这篇文章都将为你打开一扇新的大门,让你的项目因使用异步而更加高效和强大。
|
13天前
|
存储 人工智能 Java
Python编程入门:从基础到实战
【10月更文挑战第4天】本文旨在为初学者提供一个全面而深入的Python编程学习路径。我们将从Python的基本语法和概念开始,然后逐步深入到更复杂的主题,如数据结构、面向对象编程和异常处理等。最后,我们将通过一些实际的项目案例,帮助读者将理论知识应用到实践中去。无论你是编程新手,还是有一定经验的开发者,都可以在这篇文章中找到适合自己的学习内容。让我们一起开启Python编程的学习之旅吧!
|
15天前
|
人工智能 数据挖掘 Serverless
探索Python编程:从基础到实战
【10月更文挑战第2天】本文将带你走进Python的世界,了解它的基本语法、数据结构、函数等核心概念,并通过实例演示如何应用这些知识解决实际问题。无论你是编程新手还是有一定经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python编程之旅吧!
|
13天前
|
数据挖掘 程序员 调度
探索Python的并发编程:线程与进程的实战应用
【10月更文挑战第4天】 本文深入探讨了Python中实现并发编程的两种主要方式——线程和进程,通过对比分析它们的特点、适用场景以及在实际编程中的应用,为读者提供清晰的指导。同时,文章还介绍了一些高级并发模型如协程,并给出了性能优化的建议。
21 3
|
15天前
|
Linux 开发者 iOS开发
Python系统调用实战:如何在不同操作系统间游刃有余🐟
【10月更文挑战第2天】Python 以其卓越的跨平台能力和丰富的标准库,成为解决多操作系统环境下编程挑战的理想选择。本文将通过实际例子展示 Python 如何简化跨平台开发。从文件系统操作到系统调用,再到 GUI 应用开发,Python 提供了多种工具和模块,如 `os`、`pathlib` 和 `subprocess`,帮助开发者轻松应对不同平台间的差异,让你成为真正的跨平台高手。
14 5
|
12天前
|
数据采集 程序员 开发者
Python编程入门:从基础到实战
【10月更文挑战第5天】本文旨在为初学者提供一条清晰的Python学习路径,涵盖基础知识、关键概念、实战项目以及常见问题解答。我们将通过简单易懂的语言和实际代码示例,帮助读者快速掌握Python编程技能。无论你是零基础的新手还是有一定经验的开发者,都能在这篇文章中找到有价值的信息。让我们一起开启Python编程之旅吧!
|
14天前
|
前端开发 JavaScript API
JavaScript逆向爬取实战——使用Python实现列表页内容爬取(二)
JavaScript逆向爬取实战——使用Python实现列表页内容爬取(二)
16 2