Python爬虫 使用urllib的post请求百度翻译的详细翻译

        本节课通过爬取百度翻译的详细翻译的数据为例对urllib中post进行讲解。

黄线处就是提供详细翻译的文件

        先根据上一节的方法来试着爬取数据:

import urllib.request
import urllib.parse

# url是上图黄线处文件的Request URL:
url = 'https://fanyi.baidu.com/v2transapi?from=en&to=zh'

headers = {
    'User-Agent': '你的UA'
}

data = {
    'from': 'en',
    'to': 'zh',
    'query': 'spide',
    'transtype': 'realtime',
    'simple_means_flag': '3',
    'sign': '894007.608006',
    'token': '7eab9fb613c8ee66bd7d8a8e7fd3f838',
    'domain': 'common',
}

# post请求的参数必须要进行编码,并调用encode方法
data = urllib.parse.urlencode(data).encode('utf-8')

# 请求对象的定制
request = urllib.request.Request(url=url, data=data, headers=headers)

# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)

# 获取响应的数据
content = response.read().decode('utf-8')

import json

obj = json.loads(content)
print(obj)

        输出结果:

        可以发现,只能爬取部分数据,且会出现‘未知错误’ 。

        所以我们需要在请求数据的过程中进行进一步反爬。

        单单提供UA已经不足以成功请求数据,所以我们得多提供点信息:将Request Headers的所有数据都存放入headers字典中:

         可以利用EditPlus快速给数据添加单引号:

 ↓

 

        修改完headers里的数据后,点击运行会报错:

需要utf-8

         为了防止冲突,将headers里的‘Accept-Encoding’那行注释掉即可:

         再次点击运行:

        成功! 

        这时候可以思考下,那么一大串headers数据,究竟哪个才是起决定性作用的呢?

我们开始测试一下,将headers里的代码一行一行注释掉进行测试,看注释掉的那行影不影响运行结果:

         最终发现,其它代码全部注释掉,仅保留Cookie,就能成功运行爬取数据。

所以,在爬取百度翻译详细数据的时候,Cookie才是起决定性因素的条件。

                

        最终代码:

import urllib.request
import urllib.parse

url = 'https://fanyi.baidu.com/v2transapi?from=en&to=zh'

headers = {
    'Cookie': '你的Cookie',  
}

data = {
    'from': 'en',
    'to': 'zh',
    'query': 'spide',
    'transtype': 'realtime',
    'simple_means_flag': '3',
    'sign': '894007.608006',
    'token': '7eab9fb613c8ee66bd7d8a8e7fd3f838',
    'domain': 'common',
}

# post请求的参数必须要进行编码,并调用encode方法
data = urllib.parse.urlencode(data).encode('utf-8')

# 请求对象的定制
request = urllib.request.Request(url=url, data=data, headers=headers)

# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)

# 获取响应的数据
content = response.read().decode('utf-8')

import json

obj = json.loads(content)
print(obj)

        

        所以,在爬取不同网站的过程中,不同网站所需headers条件可能不同,可能要UA,可能要Cookie,也可能要Referer等。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python爬虫教程urllib主要是介绍了Python爬虫技术中的urllib库的基础用法。该教程详细讲解了urllib库的各种功能和方法,包括发送请求处理响应、设置请求头、处理异常等。这个教程对于想要学习和使用Python进行网络爬虫的人来说具有很大的参考价值。 同时,该教程也提到了一些常见的问题和解决方法,例如模拟超时的处理方法。在网络爬虫中,有时候我们长时间无法访问一个页面,可能是因为网速有限或者被发现我们是一个爬虫。针对这种情况,可以使用timeout参数来设置超时时间,如果超过了设定的时间仍无法获取响应,则会抛出URLError异常,我们可以在异常处理中对超时进行相应的处理。 总的来说,Python爬虫教程urllib是一个很好的学习资源,适合想要入门或深入学习Python爬虫技术的人使用。它提供了详细的教程和实例,可以让你快速上手和掌握使用urllib库进行网络爬虫的基本知识和技巧。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python爬虫urllib基础用法教程](https://download.csdn.net/download/weixin_38656741/12858843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python爬虫 —— urllib库的使用(get/post请求+模拟超时/浏览器)](https://blog.csdn.net/qq_50587771/article/details/123840479)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python爬虫urllib3的使用示例](https://download.csdn.net/download/weixin_38681147/12867742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值