一效果如下:
二运行环境:
win10 系统; python3;PyCharm
三 QQ 机器人用的是 qqbot 模块
用 pip 安装命令是: pip install qqbot (前提需要有 requests 库)
实现自己的机器人: 网上好几种写法, 很简单, 不过有时候环境不同会出现错误, 下面是亲测可以运行的:
- from qqbot import QQBotSlot as qqbotslot, RunBot
- @qqbotslot
- def onQQMessage(bot, contact, member, content):
- if content == "-hello":#content 是好友发的信息
- bot.SendTo(contact,"我是, QQ 机器人")
- if __name__ == "__main__":
- RunBot()
四爬取百度文库
需要模块: import urllib.request,urllib,re
获取原网页代码:
提前说下百度文库网页编码是 gb2312
- def baidu(self,world):
- data={}
- data['word'] = world
- url_World=urllib.parse.urlencode(data,encoding="GBK")
- url = "https://wenku.baidu.com/search?"+url_World+"&org=0&ie=gbk"
- page = urllib.request.urlopen(url)
- html = page.read()
- html = html.decode('gbk')
代码解析:
data['word'] = world #world 是搜索的内容, 也就是关键词
url 不必多说就是网页链接
但是二者之间多了一行代码: url_World=urllib.parse.urlencode(data,encoding="GBK")
看一下百度文库搜索 "大学":https://wenku.baidu.com/search?word=%B4%F3%D1%A7&org=0&ie=gbk
其中 %B4%F3%D1%A7 就是 "大学" 的十六进制
也就是说我们想搜索大学的相关内容需要把大学的中文转成上面格式, 如果不转会出现什么状况
我们直接把中文大学塞到链接里去访问: https://wenku.baidu.com/search?word = 大学 & lm=0&od=0&fr=top_home&ie=gbk
会有乱码这个乱码直接导致后面获取原网页解码错误也就是:
html = html.decode('gbk')
解码是让中文能够正常显示, 但是上面的乱码是不能通过 gbk 编码进行解码的, 也就会出现错误
所以不能直接把参数 world 直接放进去
而 urllib.parse.urlencode(data) 这行代码就是把中文转成 url 格式的
不过默认的编码是 utf-8, 直接把 data 放进去会按照 utf-8 进行转的话会得到如下链接:
https://wenku.baidu.com/search?word=%E5%A4%A7%E5%AD%A6&org=0&ie=gbk
此链接得到网页效果是和之前把中文放进链接效果一样
网上找到的基本上都是这样的写法, 不过百度文库是采用 gb2312 编码所以需要在那行转码代码中再添加一个编码参数就能够达到目的
如下: urllib.parse.urlencode(data,encoding="GBK")
这样无论是 url 转码还是后面的解码都会正常运行了
此过程就能够得到正常的搜索结果的原网页了
用正则获取想要的信息:
上面代码就能把需要的是标题和相应的链接给提取出来
其他的就是容错问题了
全部代码如下:
来源: https://www.cnblogs.com/chu03/p/8480848.html