掌握Python的X篇_31_使用python制作在线词典

这篇具有很好参考价值的文章主要介绍了掌握Python的X篇_31_使用python制作在线词典。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇将会介绍另一个第三方模块requests,是用于HTML请求的客户端,虽然其也可以作为服务端,但是更多的是作为客户端,在爬虫中会被用到。

1. requests库的安装

pip install requests

官方文档:https://requests.readthedocs.io/en/master/

2. requests的使用

  • 在requests提供了get方法(以及post方法),可以向指定的URL发送请求,并返回请求结果。
  • 请求的结果,被封装为一个response对象。
In [13]: import requests

In [14]: r = requests.get("https://www.baidu.com")

response对象中的各种属性和方法,对应了返回结果的操作。介绍重点:

  • r.content:二进制形式的返回结果,需要解码才能变为字符串
In [15]: r.content
Out[15]: b'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93</title></head> <
  • r.text:对应了r.content的解码,因为编码方式设置可能存在问题,解码结果不一定正确
In [16]: r.text
Out[16]: '<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>ç\x99¾åº¦ä¸\x80ä¸\x8bï¼\x8cä½\xa0å°±ç\x9f¥é\x81\x93</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div c
  • r.encoding:对应了编码方式,r.text是依照r.encoding的设置进行解码的
In [17]: r.encoding
Out[17]: 'ISO-8859-1' #查看到界面方式为此,实际是不对的,互联网中默认是utf-8
In [18]: r.encoding = "utf-8" #设置为utf-8

In [19]: r.text #再进行解码
Out[19]: '<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_fo

3. 使用bs4+requests制作词典脚本

此处结合上篇bs4的内容,做一个在线词典的脚本。

(1)在https://dict.cn的在线查字典网站中可以看到网页地址的规律:

https://dict.cn/search?q=<单词>

通过查看网页的源代码(源代码查看方式:网页右键,查看源码),可以看到,我们所关注的翻译的汉字内容都是放在"strong"的标签内的。

<strong>壳;炮弹;[]外壳程序</strong>
<strong>脱落;去壳;拾贝壳;炮轰</strong>

(2)我们可以做一个脚本:

  • 拼接url
  • request发起请求,获取html
  • bs4解析内容,获取解释(寻找strong标签)

先手动进行上述动作:

In [20]: r = requests.get("https://dict.cn/search?q=shell")

In [21]: r.encoding = "utf-8"

In [22]: soup = BeautifulSoup(r.text)

In [23]: soup.find_all("strong")
Out[23]:
[<strong>壳;炮弹;[]外壳程序</strong>,
 <strong>脱落;去壳;拾贝壳;炮轰</strong>,
 <strong>[C] [U] (贝、卵、坚果等的)</strong>,
 <strong>[C] 外壳,框架</strong>,
 <strong>[C] 炮弹</strong>]

In [24]: tag0 = soup.find_all("strong")[0]

In [27]: tag0.text
Out[27]: '壳;炮弹;[计]外壳程序'
In [28]: quit() #退出ipython

在vscode中编辑脚本如下:

from bs4 import BeautifulSoup
import requests
import sys

if __name__== "__main__":
    word = sys.argv[1]
    url = "https://dict.cn/search?q=" + word

    r = requests.get(url)
    r.encoding ="utf-8"
    soup = BeautifulSoup(r.text, features="html.parser")
    mylist = soup.find_all("strong")
    for item in mylist:
        print(item.text)

在vscode中输入如下:python lookup_dict.py fish

PS E:\MyselfCode\ShellMad\Python> python lookup_dict.py fish
鱼;鱼肉;笨蛋;新手;新囚犯
钓鱼;捕鱼;摸索;搜寻
[C][U]鱼肉
vt. & vi. 捕鱼; 钓鱼
vt. & vi. 摸出,掏出
fish in sth

这样就可以做的更好玩一些。

4.学习视频地址:使用python制作在线词典文章来源地址https://www.toymoban.com/news/detail-643757.html

到了这里,关于掌握Python的X篇_31_使用python制作在线词典的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包