Python爬取有道词典 您所在的位置:网站首页 爬英语 Python爬取有道词典

Python爬取有道词典

2023-12-16 04:10| 来源: 网络整理| 查看: 265

Python爬取有道词典

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

首先确定要爬取的内容

有道词典截图

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

找到相应的api

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

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

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)

把爬取到的内容解析成json

返回结果

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

柯林斯词典返回结果

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

q:'lj:acquaintance'

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

获取例句返回



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有