Pyhton网络爬虫实现单词简单矫正

使用requests爬取百度翻译实现英文单词简单矫错
Pyhton网络爬虫实现单词简单矫正
首先选择百度翻译的原因:
当我们输入一个拼写错误的单词时,它会提示你可能正确的单词,根据这个原理,实现单词的矫错。
Pyhton网络爬虫实现单词简单矫正

我们要做的就是把翻译,还有这个可能正确的单词提取出来。
Pyhton网络爬虫实现单词简单矫正
Pyhton网络爬虫实现单词简单矫正
用Chrome浏览器F12审查元素,可以找到翻译URL,请求方式为POST,然后进行Header参数,DaTa参数的构建
base_url = ‘https://fanyi.baidu.com/sug
data = {
‘kw’: content #我们所输入的关键字
}
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36’,
‘Content-Length’: str(len(data))
}
返回结果为json格式,导入json包处理,然后进行遍历,把结果提取出来。
for item in json_data[‘data’]:
response = [item[‘k’] + item[‘v’]]
print(response)
接下来一个小难点是找到提示的正确的单词,还是通过F12,审查元素Pyhton网络爬虫实现单词简单矫正
观察其Headers头部可以找到url地址,发现其是Get方法请求。最后做一个判断,如果单词正确打印出翻译,如果不正确,通过此方法找到正确的单词,再进行翻译。

完整代码奉上。。。。。

‘’’
用 requests库构建简单的网络爬虫,对百度翻译进行抓取,实现对所输入单词的翻译与简单矫正
‘’’
import requests
import json
import sys
def baidu_spider(content):
‘’’
通过分析百度翻译网页,发现所有结果是以POST方式返回。分析其headers,data参数,进行headers,data的封装,
在这里发现data参数只有一个"kw",经分析就是我们所输入的单词,headers头部中Content-Length很重要,表示参数经解码后
的长度,requests库可以自行解析,User-Agent,防止反爬
‘’’
base_url = ‘https://fanyi.baidu.com/sug
data = {
‘kw’: content
}
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36’,
‘Content-Length’: str(len(data))
}
response = requests.post(base_url,data=data,headers=headers)
#返回的结果是json模式,所以用json模块处理
json_data = json.loads(response.text)
# print(response.text)
# print(type(response.text))
# print(json_data)
# print(type(json_data))
for item in json_data[‘data’]:
response = [item[‘k’] + item[‘v’]]
print(response)
# 如果单词拼写错误,返回的列表为空,做一下简单判断。
if len(json_data[‘data’]) == 0:
response = requests.get(‘https://correctxt.baidu.com/correctxt?&text={}&ie=utf-8&version=0’.format(content))
item = response.text
item = json.loads(item)
print(“你输入的单词 {} 有误,正确的单词可能是”.format(content)+ " " +item[‘correctxt’])
correct_word = item[‘correctxt’]
baidu_spider(correct_word)

if name == ‘main’:
while True:
content = input(“关闭程序请输入“退出”,请输入你的单词:”)
if content == ‘退出’:
sys.exit()
baidu_spider(content)