python爬取热搜制作词云

 更新时间:2022年01月25日 10:54:46   作者:Dead_Cicle  
这篇文章主要介绍了python爬取百度热搜制作词云,首先爬取百度热搜,至少间隔1小时,存入文件,避免重复请求,如果本1小时有了不再请求,存入数据库,供词云包使用,爬取热搜,具体流程请需要的小伙伴参考下面文章内容

环境:win10,64位,mysql5.7数据库,python3.9.7,ancod

逻辑流程:

  • 1、首先爬取百度热搜,至少间隔1小时
  • 2、存入文件,避免重复请求,如果本1小时有了不再请求
  • 3、存入数据库,供词云包使用
  • 1、爬取热搜,首先拿到url,使用的包urllib,有教程说urllib2python2的。
'''读取页面'''
def readhtml(self,catchUrl):
    catchUrl=self.catchUrl if not catchUrl else catchUrl
    response=urllib.request.urlopen(catchUrl)
    text=response.read().decode(self.bmcode)
    return text


这里在本类定义了几个属性,上述self的就是,这不是重点,继续,上述使用了三目运算符

'''生成时间'''
    def createTime(self):
        # 格式化成2016-03-20 11:45:39形式
        return time.strftime("%Y%m%d%H", time.localtime())
    '''写入文件'''
    def write2file(self,text):
        fileName=self.writePosition+self.createTime()+'.txt'
        self.fileName=fileName
        print(fileName)
        #判断路径,不存在生成
        if not os.path.exists(self.writePosition):
            os.mkdir(self.writePosition )
        if os.path.exists(fileName):
            uuid_tools().printlog('已经存在:{}'.format(fileName))
            return self.fileName
        mode='a' if os.path.exists(fileName) else 'w'
 
        with open(fileName,mode,encoding=self.bmcode) as f:
            f.write(text)
        print("写入{} 完成".format(fileName))
        return self.fileName


这里每个小时生成一个文件名称,避免了重复,如果这一小时里已经抓取过了,那么不再抓取了。

这里使用了日志(需导入日志包import logging):

    '''打印日志'''
    def printlog(self,loginfo):
        logging.basicConfig(level=logging.INFO)
        logging.info(loginfo)


获取到内容后,这里需要去掉<div>xxx</div>这个东西,还有个查看更多

'''去掉标签'''
    def removeBq(self,content):
        pat=re.compile('>(.*?)<')
        str=''.join(pat.findall(content))
        str=str.replace(' 查看更多&gt; ','')
        return str
    '''输出内容'''
    def printContent(self, o,class_name):
        print(self.removeBq(str(o.find(class_=class_name))))


这里是beautifulsoup分析html格式的内容:

'''测试获取某个片段'''
    def readFilePd(self,fileName):
        #fileName='d:\\bdrs\\2021122010.txt'
        jt=open(fileName,'r',encoding=self.bmcode)
        try:
            content=jt.read()
            soup=BeautifulSoup(content,"html.parser")
            rs=RsBean()
            for k in soup.find_all('div',class_=rs.alldiv):
                print( str(k))
                # self.printContent(k,rs.sx)
                # self.printContent(k,rs.bt)
                # self.printContent(k,rs.ms)
                # self.printContent(k,rs.rszs)
        except  Exception as e:
            print('error:'+str(e))


最主要的是这一句:soup.find_all('div',class_='xxx')尤其这个横杠,是该方法参数,代表标签的class名称。

最后插入数据库,

'''打开连接'''
    def open(self):
        self.db=pymysql.connect(host=self.host,port=3306,user=self.user,passwd=self.passwd,db=self.database)
        #创建游标
        self.cursor=self.db.cursor()
        #print("打开连接成功")
    #关闭
    def close(self):
        self.cursor.close()
        self.db.close()
        #print("close连接成功")
def execute(self,sql,list=[]):
        try:
            self.open()
            self.cursor.execute(sql,list)
            self.db.commit()
            print("execute successfully!")
        except Exception as e:
            self.db.rollback()
            print("Execute failure!",str(e))
        self.close()


封装的代码,后边这样使用:

'''读取文件'''
    def readFile(self,fileName):
        #fileName='d:\\bdrs\\2021122010.txt'
        jt=open(fileName,'r',encoding=self.bmcode)
        try:
            content=jt.read()
            soup=BeautifulSoup(content,"html.parser")
            rs=RsBean()
            daoOper=OperateRsDao()
            rs_shijian=self.cutfilename(fileName)
            #先清空
            self.clearBefore(daoOper,rs_shijian)
            #读取文件
            for k in soup.find_all('div',class_=rs.alldiv):
                #插入数据
                rs.rs_shijian=rs_shijian
                self.insertData(daoOper,k,rs)
        except  Exception as e:
            print('error:'+str(e))


最后词云显示:

if __name__ == '__main__':
    a=db_connect()
    sql='select id,shun_xu,biao_ti,miao_shu,reshou_zhishu,insert_time,rs_shijian from bdrs_one order by rs_shijian desc,shun_xu asc '
    result=a.select(sql)
    jieguo=''
    for m in result:
        print(m)
        jieguo+=m[2]
    #根据title做词云
    CiYun().showImage(jieguo)


效果:

 可以看出最大的瓜是啥。

到此这篇关于python爬取百度热搜制作词云的文章就介绍到这了,更多相关python爬取热搜制作词云内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于循环神经网络(RNN)的古诗生成器

    基于循环神经网络(RNN)的古诗生成器

    这篇文章主要为大家详细介绍了基于循环神经网络(RNN)的古诗生成器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • python K近邻算法的kd树实现

    python K近邻算法的kd树实现

    这篇文章主要介绍了python K近邻算法的kd树实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • python模块中pip命令的基本使用

    python模块中pip命令的基本使用

    这篇文章主要为大家介绍了python机器学习python实现神经网络的示例解析,在同样在进行python机器学习的同学可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • python中scipy.stats产生随机数实例讲解

    python中scipy.stats产生随机数实例讲解

    在本篇文章里小编给大家分享的是一篇关于python中scipy.stats产生随机数实例讲解内容,有需要的朋友们可以学习下。
    2021-02-02
  • Python pyecharts数据可视化实例详解

    Python pyecharts数据可视化实例详解

    PyEcharts是一个用于生成 Echarts图表的类库, Python是一门富有表达力的语言,很适合用于数据处理,下面这篇文章主要给大家介绍了关于Python pyecharts数据可视化的相关资料,需要的朋友可以参考下
    2022-05-05
  • Python使用Numpy实现Kmeans算法的步骤详解

    Python使用Numpy实现Kmeans算法的步骤详解

    将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。这篇文章主要介绍了Python使用Numpy实现Kmeans算法,需要的朋友可以参考下
    2021-11-11
  • Linux CentOS7下安装python3 的方法

    Linux CentOS7下安装python3 的方法

    在CentOS7下,默认安装的就是python2.7,下面通过本文给大家分享Linux CentOS7下安装python3 的方法,需要的朋友参考下吧
    2018-01-01
  • Python兔子毒药问题实例分析

    Python兔子毒药问题实例分析

    这篇文章主要介绍了Python兔子毒药问题,实例分析了兔子毒药问题的算法原理与Python解决方法,需要的朋友可以参考下
    2015-03-03
  • 一文带你搞懂Python中的pyc文件

    一文带你搞懂Python中的pyc文件

    Python是一门解释性语言,没有严格意义上的编译和汇编过程。Pyc文件是py编译过程中产生的字节码文件,可以由虚拟机直接执行,是python将目标源码编译成字节码以后在磁盘上的文件形式。本文就来聊聊pyc文件的写入等只是,感兴趣的可以了解一下
    2022-12-12
  • 使用python生成各种常见条形码及二维码

    使用python生成各种常见条形码及二维码

    条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,本文将介绍如何使用Python快速生成各种常见的条形码如Code 128、EAN-13,以及生成二维码,需要的朋友可以参考下
    2024-07-07

最新评论