今天,双是番外篇,这次番外篇主要教大家如何用网络爬虫查询词语。
1.确定数据源
首先,我们得找一个查询的数据源,我找到了360国学网站,选择“词语大全”,它的查询词语网址为:
https://guoxue./query/index/
这后面得加上亿些参数:
type = phrasetext = 圆组词word_inc = 圆
2. 给请求添加数据源网址参数
用word来代替“圆”,写成Python字典:
word = input("请输入你想组词的字:")key_dict = {'type': 'phrase','text': word+'组词','word_inc': word}
发出请求:
import requestsword = input("请输入你想组词的字:")key_dict = {'type': 'phrase','text': word+'组词','word_inc': word}url = 'https://guoxue./query/index/'r = requests.get(url, params=key_dict)print(r.status_code)
输出:
200
说明请求正常。
3.解析词语页面
经过分析,我们发现,所有的词语都在一个div标签中(绿色标注处),在里面,每个单独的div标签又嵌套了3个div标签,其中的一个(橙色标注处)的内容是我们需要的词语。
from bs4 import BeautifulSoup as bsimport requestsword = input("请输入你想组词的字:")key_dict = {'type': 'phrase','text': word+'组词','word_inc': word}url = 'https://guoxue./query/index/'r = requests.get(url, params=key_dict)soup = bs(r.text, 'html.parser')# 查找上图绿色标注标签div_content = soup.find("div", {'class': 'content'})# 查找上图橙色标注标签中的a标签all_title = div_content.find_all('a', {'data-logid': "ordinal_incgroup_phrases"})# 加入判断 判断all_title是否为空if all_title:# 如果all_title不为空print('\n'+word+"组词有:\n")for t in all_title:# 遍历所有a标签内容print(t.string)print("\n查看更多信息可前往:\n"+r.url)else:print("\n组词内容无法查询到!")
4.测试代码
以上就是我们今天全部的代码,我们来试着运行亿下:
请输入你要查询的字:圆
圆组词有:
圆滑
方圆
圆通
团圆
珠圆玉润
方枘圆凿
破镜重圆
事宽即圆
圆润
自圆其说
查看更多信息可前往:
https://guoxue./query/index/?type=phrase&text=%E5%9C%86%E7%BB%84%E8%AF%8D&word_inc=%E5%9C%86
针不戳,那今天的课程就到这儿了,感兴趣的可以爬取词语拼音或解释,有什么问题请在评论区讨论,喜欢的话可以收藏一下,再见!
另外,不了解requests模块和BeautifulSoup4模块的可以前往笔者的Python:第三方库requests 和 Python:第三方库BeautifulSoup4去看看。
如果觉得《Python番外篇:网络爬虫组词程序》对你有帮助,请点赞、收藏,并留下你的观点哦!