爬虫剑谱第六页(爬取百度翻译)

首先打开百度翻译,进行翻译

 可以看到每次搜索的单词不同,搜索结果也就不同,其中页面中显示结果的部分,也会随着结果的变化而变化,这种页面局部变化的技术称为AJax。(一会需要用到)

打开开发者选项(F12或点击鼠标左键选择检查),进入Network选择我们要捕获的数据包

因为是数据是通过Ajax技术显示的,所以我们需要选择Ajax对应的数据请求包,也就是XHR

 进入以后,我们随便搜索一个单词,例如:dog

图1图2 图3

 我们可以看到,随着字母的增加,对应的数据包,也在增加,因此,我们只需要选择最终单词的数据包,也就是图3

 打开它的数据包,我们发现他是POST请求,并且在response中所携带的数据是一组json数据

 了解以上以后,我们开始进行编码实战

#导包:
import requests
import json
post_url = "https://fanyi.baidu.com/sug"
#封装一个data参数,对参数进行处理,因为请求需要参数才能获取响应的数据
data={
    "kw":"dog"
}
#请求之前进行伪装
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/15"
    }
response = requests.post(url=post_url,data=data,headers=headers)
#获取响应数据
#使用json()方法直接返回一个对象(如果确认服务器的响应数据是json类型的,才可以使用json()方法)
dic_obj = response.json()
#进行持久化存储
fp = open("./dog.json","w",encoding='utf-8')
json.dump(dic_obj,fp=fp,ensure_ascii=False)#将dic_obj对象传入fp文件中,因为传入的是文本字符,不能使用ASCII编码,所以将其设为False

print("over")

结果:

 当然,这只是一个单词的获取,但我们需要的是无论输入什么单词,它都可以获取到对应的数据

因此,我们还需要对代码进行一些小小的修改

#导包:
import requests
import json
post_url = "https://fanyi.baidu.com/sug"
#封装一个data参数,对参数进行处理,因为请求需要参数才能获取响应的数据
word = input("请输入你想要翻译的单词:")
data={
    "kw":word
}
#请求之前进行伪装
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/15"
    }
response = requests.post(url=post_url,data=data,headers=headers)
#获取响应数据
#使用json()方法直接返回一个对象(如果确认服务器的响应数据是json类型的,才可以使用json()方法)
dic_obj = response.json()
#进行持久化存储
FileName = word+".json"
fp = open(FileName,"w",encoding='utf-8')
json.dump(dic_obj,fp=fp,ensure_ascii=False)#将dic_obj对象传入fp文件中,因为传入的是文本字符,不能使用ASCII编码,所以将其设为False

print("over")

结果:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值