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

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

文章目录

  • 1. requests库的安装
  • 2. requests的使用
  • 3. 使用bs4+requests制作词典脚本

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> 
  • 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> 

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制作在线词典

你可能感兴趣的:(#,掌握Python的X篇,python,开发语言)