爬虫(一)百度翻译

本文目的:输入单词给出翻译;得到翻译结果源代码。

本文使用firefox浏览器,参考众多博客总结步骤如下:

①打开https://fanyi.baidu.com/?aldtype=16047#auto/zh,这是最开始从百度搜索里进去的百度翻译的网址,首先空白处右键选择【查看元素】,【网络】,刷新,【XHR】:

xhr:XMLHttpRequest在后台与服务器交换数据,这意味着可以在不加载整个网页的情况下,对网页某部分的内容进行更新。更新部分一般情况为json格式

②在页面处随意输入一个单词,查看页面元素里【XHR】的变化:

可以看见,增多了一些名为sug的文件,其类型是json,方法为post。

③双击打开任意一个sug,查看其中的数据信息:

可以看见,sug文件中的数据信息是翻译结果,它是以utf编码存储的,而且是一个字典{"errno":0,"data":[{}]}的形式,最里面的字典就是我们得到的翻译结果,翻译结果的第一组kv就是我们需要的,其余为联想翻译结果。所以我们要做的事情就是,先把这个字典取出来,再["data"][0]["v"]就能够准确搜到我们需要的翻译结果。

④代码部分:

import requests
import json
url = "https://fanyi.baidu.com/sug"
# 定义请求的参数
data = {'kw': 'world'}
# 创建请求, 发送请求, 爬取信息
res = requests.post(url, data=data)
# 解析结果
str_json = res.content.decode("utf-8")
myjson = json.loads(str_json)
print(myjson)
print(myjson['data'][0]['v'])

代码结果为:

如果说想要实现在线翻译,修改如下:

import requests
import json
url = "https://fanyi.baidu.com/sug"
# 定义请求的参数
word=input("give a word:")
data = {'kw': word}
# 创建请求, 发送请求, 爬取信息
res = requests.post(url, data=data)
# 解析结果
str_json = res.content.decode("utf-8")
myjson = json.loads(str_json)
print(myjson)
print(myjson['data'][0]['v'])

代码结果为:

好,以上工作告一段落。

import requests
import json
url_post = "https://fanyi.baidu.com/sug"
headers={
    "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0"
}
data={
    "kw": "dog"
}

try:
    response=requests.post(url=url_post,data=data,headers=headers)
    if response.content:
        str_json=response.content.decode("utf-8")
        dic_obj = json.loads(str_json)
        fp = open("C:/Users/Administrator/Desktop/dog.json","w",encoding="utf-8")
        json.dump(dic_obj,fp=fp,ensure_ascii=False)
except ConnectionError:
    print('error')
 

猜你喜欢

转载自www.cnblogs.com/liuxiangyan/p/12435199.html