博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)...
阅读量:6884 次
发布时间:2019-06-27

本文共 2628 字,大约阅读时间需要 8 分钟。

一、效果如下:

二、运行环境:

        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转码还是后面的解码都会正常运行了。         此过程就能够得到正常的搜索结果的原网页了 用正则获取想要的信息: 上面代码就能把需要的是标题和相应的链接给提取出来 其他的就是容错问题了。     全部代码如下:
from qqbot import QQBotSlot as qqbotslot, RunBotimport urllib.request,urllib,reclass pyth(object):    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') title= re.compile(r'2: for i in range(2): pri += "\n"+title1[i]+"\n链接:"+url11[i]; else: pri = "相关内容过少,请换个题目" return pri @qqbotslot def onQQMessage(bot, contact, member, content): if "搜索" in content[0:2]: if len(content)>2: world = content.split("搜索",1)[1].encode('gbk') run=pyth() run.baidu(world) jieguo = run.baidu(world).encode("utf-8") bot.SendTo(contact,jieguo) if __name__ == "__main__": RunBot()
 

 

 

 

 
 

 

 
 

转载于:https://www.cnblogs.com/chu03/p/8480848.html

你可能感兴趣的文章
centos7系统安装python3,pip3,django
查看>>
php观察者模式
查看>>
励志名言
查看>>
Linux基本命令 文件搜索命令
查看>>
C#点击按钮用DataGridView动态增加行、删除行,增加按钮列
查看>>
重构的信号
查看>>
如何计算团队贡献
查看>>
图片特效处理之怀旧效果
查看>>
MySQL5.7主从,单slave多master
查看>>
51nod 1304 字符串的相似度(exkmp)
查看>>
Frameset使用教程
查看>>
cocos-lua
查看>>
jdk的安装与配置
查看>>
Python数据抓取技术与实战 pdf
查看>>
20145209 《信息安全系统设计基础》第3周学习总结
查看>>
python 进程
查看>>
Grunt插件uglify
查看>>
export 与 export default
查看>>
linux配置网卡
查看>>
正则表达式语法
查看>>