今天,双是番外篇,这次番外篇主要教大家如何用网络爬虫查询词语。
1.确定数据源
首先,我们得找一个查询的数据源,我找到了360国学网站,选择“词语大全”,它的查询词语网址为:
https://guoxue.baike.so.com/query/index/
这后面得加上亿些参数:
- type = phrase
- text = 圆组词
- word_inc = 圆
2. 给请求添加数据源网址参数
用word来代替“圆”,写成Python字典:
word = input("请输入你想组词的字:")
key_dict = {
'type': 'phrase',
'text': word+'组词',
'word_inc': word
}
发出请求:
import requests
word = input("请输入你想组词的字:")
key_dict = {
'type': 'phrase',
'text': word+'组词',
'word_inc': word
}
url = 'https://guoxue.baike.so.com/query/index/'
r = requests.get(url, params=key_dict)
print(r.status_code)
输出:
200
说明请求正常。
3.解析词语页面
经过分析,我们发现,所有的词语都在一个div标签中(绿色标注处),在里面,每个单独的div标签又嵌套了3个div标签,其中的一个(橙色标注处)的内容是我们需要的词语。
from bs4 import BeautifulSoup as bs
import requests
word = input("请输入你想组词的字:")
key_dict = {
'type': 'phrase',
'text': word+'组词',
'word_inc': word
}
url = 'https://guoxue.baike.so.com/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.baike.so.com/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去看看。