当前位置:   article > 正文

Python爬取有道词典_使用python 爬取英语考试单词和发音

使用python 爬取英语考试单词和发音

Python爬取有道词典

最近在学英语,找了麦克米伦7000词跟着慢慢背单词,一开始Google翻译柯林斯词典找英译词解释,tatoeba找例句三个网站来回跳,后来找到有道词典大概整合了我对发音例句英译的需求。于是就想着能不能爬取一下7000词的例句和音标等数据方便查阅或者用来做一个小网页demo来练习

首先确定要爬取的内容

有道词典截图

这里面单词发音链接音标英译例句是我需要的内容。

找到相应的api

打开开发者工具一看是个post请求,那就不方便用jsonp的方式跨域get请求资源了。(因为本来想着用前端做的)

# 查询词典返回
dict_api = 'https://dict.youdao.com/jsonapi_s?doctype=json&jsonversion=4'
  • 1
  • 2
'
运行

image-20220807005520238

扔到JSON在线视图查看器(Online JSON Viewer) (bejson.com)里看一眼[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8tdSsWBY-1659862543326)(https://img2022.cnblogs.com/blog/1674552/202208/1674552-20220807010519329-1269403918.png)]

在json内找到需要的内容,那么只需要确认一下需要的参数就可以了。这里使用在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具,JSON模拟请求 (sojson.com)先模拟测试

确认返回结果

于是api需要的参数也捣鼓明白了,接下来编写python测试一下。

编写Python代码

这里用典中典的requests模块

import requests
import json 

query_word = 'abolish'

res = requests.post(url='https://dict.youdao.com/jsonapi_s', data={
    'q':query_word,
    'le':'en'
})

res_json = json.loads(res.text)

phonetic_symbol = res_json['simple']['word'][0]

colins_entries = res_json['collins']['collins_entries'][0]['entries']['entry']

sents = res_json['blng_sents_part']['sentence-pair']

print(phonetic_symbol,colins_entries,sents)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

把爬取到的内容解析成json

返回结果

测试了一下没什么问题,但是json数组接着细分取需要的值可能会出问题。音标例句应该还好,柯林斯英译会把不同词性列出来,偶尔还附带个参照seeAlso需要处理一下

柯林斯词典返回结果

测试的时候顺便发现了提取例句的方式

q:'lj:acquaintance'
  • 1
'
运行

api还是那个api,查询的单词加上lj:的前缀就可以获取全部的例句

获取例句返回

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号