本篇将会介绍另一个第三方模块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
这样就可以做的更好玩一些。文章来源:https://www.toymoban.com/news/detail-643757.html
4.学习视频地址:使用python制作在线词典文章来源地址https://www.toymoban.com/news/detail-643757.html
到了这里,关于掌握Python的X篇_31_使用python制作在线词典的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!