11 信息化领域热词分类分析及解释 第五步按目录爬取热词

功能要求为:1,数据采集,定期从网络中爬取信息领域的相关热词

      2,数据清洗:对热词信息进行数据清洗,并采用自动分类技术生成自动分类计数生成信息领域热词目录。

      3,热词解释:针对每个热词名词自动添加中文解释(参照百度百科或维基百科)

      4,热词引用:并对近期引用热词的文章或新闻进行标记,生成超链接目录,用户可以点击访问;

      5,数据可视化展示:① 用字符云或热词图进行可视化展示;② 用关系图标识热词之间的紧密程度。
      6,数据报告:可将所有热词目录和名词解释生成 WORD 版报告形式导出。

这次完成了按照目录得到相关的热词和解释,目录是参照博客园的新闻分类,

代码如下:

import requests
from lxml import etree
import time
import pymysql
import datetime
import urllib
import json
import jieba
import pandas as pd
import re
import os
from collections import Counter
def getKeyWords(filehandle,indexname):
    print("getKeyWords")
    mystr = filehandle.read()
    #print(mystr)
    seg_list = jieba.cut(mystr)  # 默认是精确模式
    print(seg_list)
    stopwords = {}.fromkeys([line.rstrip() for line in open(r‘stopwords.txt‘)])
    c = Counter()
    for x in seg_list:
        if x not in stopwords:
            if len(x) > 1 and x != ‘\r\n‘:
                c[x] += 1
    print(‘\n词频统计结果:‘)
    # 创建热词文件
    f = open("final/"+indexname+".txt", "a+", encoding=‘utf-8‘)
    for (k, v) in c.most_common(2):  # 输出词频最高的前两个词
        print("%s:%d" % (k, v))
        f.write(k + ‘\n‘)
    #print(mystr)
    filehandle.close();
def getDetail(href,title):
    pass
def getEachPage(page,i,type):
    url = "https://news.cnblogs.com/n/c" + str(i) +"?page=" +str(page)
    r = requests.get(url)
    html = r.content.decode("utf-8")
    html1 = etree.HTML(html)

    href = html1.xpath(‘//h2[@class="news_entry"]/a/@href‘)
    title = html1.xpath(‘//h2[@class="news_entry"]/a/text()‘)
    indexname1 = html1.xpath(‘//div[@id = "guide"]/h3/text()‘)
    indexname = indexname1[0].replace(‘ ‘, ‘‘).replace(‘/‘,‘‘)
    print(indexname)
    file = open("middle/"+indexname+".txt", "a+", encoding=‘utf-8‘)
    print(len(href))
    for a in range(0, 18):
        print(href[a],title[a])
        #得到标题和链接
        getDetail(href[a], title[a])
        file.write(title[a]+ ‘\n‘)
    print("页数:"+str(page))
    if type == ‘一般‘ and page ==4:
        print("函数里")
        file = open("middle/" + indexname + ".txt", "r", encoding=‘utf-8‘)
        getKeyWords(file,indexname)

    if type == ‘其他‘ and page == 4:
        file = open("middle/" + indexname + ".txt", "r", encoding=‘utf-8‘)
        getKeyWords(file, indexname)
def getDiffPage(i):
    if i == 1199:
        #86页数据
        for page in range(0, 5):
            #得到每页信息
            type = ‘其他‘
            getEachPage(page,i,type)
    else:
        #100页数据
        for page in range(0, 5):
            # 得到每页信息
            type = ‘一般‘
            getEachPage(page,i,type)

def loopNewsType():
    for i in range(1101,1111):
        if i == 1104 or i ==1105 or i ==1106 or i ==1107 or i ==1108 or i ==1109:
            i = i+5
        elif i == 1110:
            i = 1199
        #遍历页数
        getDiffPage(i)

#爬取解释
def climingExplain(line):
    line1=line.replace(‘\n‘,‘‘)
    print(line1)
    url = "https://baike.baidu.com/item/"+str(line1)
    #print(url)
    head = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36‘,
        ‘cookie‘:‘BAIDUID=AB4524A16BFAFC491C2D9D7D4CAE56D0:FG=1; BIDUPSID=AB4524A16BFAFC491C2D9D7D4CAE56D0; PSTM=1563684388; MCITY=-253%3A; BDUSS=jZnQkVhbnBIZkNuZXdYd21jMG9VcjdoanlRfmFaTjJ-T1lKVTVYREkxVWp2V2RlSVFBQUFBJCQAAAAAAAAAAAEAAACTSbM~Z3JlYXTL3tGpwOTS9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMwQF4jMEBed; pcrightad9384=showed; H_PS_PSSID=1454_21120; delPer=0; PSINO=3; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; __yjsv5_shitong=1.0_7_a3331e3bd00d7cbd253c9e353f581eb2494f_300_1581332649909_58.243.250.219_d03e4deb; yjs_js_security_passport=069e28a2b81f7392e2f39969d08f61c07150cc18_1581332656_js; Hm_lvt_55b574651fcae74b0a9f1cf9c8d7c93a=1580800784,1581160267,1581268654,1581333414; BK_SEARCHLOG=%7B%22key%22%3A%5B%22%E7%96%AB%E6%83%85%22%2C%22%E6%95%B0%E6%8D%AE%22%2C%22%E9%9D%9E%E6%AD%A3%E5%BC%8F%E6%B2%9F%E9%80%9A%22%2C%22mapper%22%5D%7D; Hm_lpvt_55b574651fcae74b0a9f1cf9c8d7c93a=1581334123‘
    }
    r = requests.get(url,headers = head)
    #print(r.status_code)
    html = r.content.decode("utf-8")
    #print(html)
    html1 = etree.HTML(html)
    #print(html1)
    content1 = html1.xpath(‘//div[@class="lemma-summary"]‘)
    #print(content1[0])
    if len(content1)==0:
        #custom_dot  para-list list-paddingleft-1
        content1 =html1.xpath(‘string(//ul[@class="custom_dot  para-list list-paddingleft-1"])‘)
        print(content1)
        if len(content1)==0:
            print(‘未找到解释‘)
            content1 = ‘未找到解释‘
            return content1
    else:
        content2 =content1[0].xpath (‘string(.)‘).replace(‘&nbsp‘,‘‘).replace(‘\n‘,‘‘)
        return content2
        print(content2)
def getExpalin(filename):
    lines =[]
    for line in open("final/"+filename,encoding=‘utf-8‘):
        explain =  climingExplain(line)
        line = line +"\t"+explain
        print(explain)
        print("line:"+line.replace("\n",""))
        lines.append(line.replace("\n",""))
        #f = open("final/"+filename, ‘w+‘,encoding=‘utf-8‘)
        # f.write(line + "\n")
    f = open("final/"+filename, ‘w+‘,encoding=‘utf-8‘)
    for i in range(0, len(lines)):
        f.write(lines[i] + "\n")
    f.close()
def wordsExplain():
    for root, dirs, files in os.walk("final"):
        print(files)  # 当前路径下所有非目录子文件
    print(len(files))
    for i in range(0,len(files)):
        # filename = files[i].replace(".txt","")
        print(files[i])
        getExpalin(files[i])
        #break
if __name__==‘__main__‘:
    #遍历得到不同新闻类型链接尾部数字
    #loopNewsType()
    #热词解释
    wordsExplain()

  

运行结果如下:

原文地址:https://www.cnblogs.com/xcl666/p/12310317.html

时间: 2024-08-08 19:28:19

11 信息化领域热词分类分析及解释 第五步按目录爬取热词的相关文章

09 信息化领域热词分类分析及解释 第三步 将清洗完毕的热词添加百度百科解释

功能要求为:1,数据采集,定期从网络中爬取信息领域的相关热词 2,数据清洗:对热词信息进行数据清洗,并采用自动分类技术生成自动分类计数生成信息领域热词目录. 3,热词解释:针对每个热词名词自动添加中文解释(参照百度百科或维基百科) 4,热词引用:并对近期引用热词的文章或新闻进行标记,生成超链接目录,用户可以点击访问: 5,数据可视化展示:① 用字符云或热词图进行可视化展示:② 用关系图标识热词之间的紧密程度. 6,数据报告:可将所有热词目录和名词解释生成 WORD 版报告形式导出. 本次完成第三

08 信息化领域热词分类分析及解释 第二步 将爬取的数据使用jieba分词处理并清洗

直接上代码: import jieba import pandas as pd import re from collections import Counter if __name__=='__main__': filehandle = open("news.txt", "r",encoding='utf-8'); mystr = filehandle.read() seg_list = jieba.cut(mystr) # 默认是精确模式 print(seg_l

爬虫:爬取海词的翻译内容

在爬取海词的时候遇到了一个问题,在异步加载的时候,需要一个t值,但是这个t值是js加载出来的,直接拼接的,我们无法从网页中得到:  当在搜索框输入单词的时候:你在干嘛 替换下图中的page的值就能达到翻页的目的: 那么当前的目的就是要能够找到这段js代码,同时获取对应输入的t的值,来重新组合url 真正的url只需要如下内容: 我提前把关键字和t都处理了,写成了字典的形式, key:你在干嘛  ff[key]:WuqarCRs {“你好”:“WuqarCRs”} #提前处理成了这种,方便提取 u

Python 爬取 热词并进行分类数据分析-[热词分类+目录生成+关系演示+报告生成]

日期:2020.02.04 博客期:143 星期二   [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 如下图,我已经解决的需求是标黄的部分,剩余需求就只有 热词分类.目录生成.热词关系图展示.数据报告导出 四部分了,这些需求是最紧要完成的,呼~撸起袖子加油干!   1.热词分类 2.热词目录生成 3.热词关系图展示 4.Word模板报告撰写 5.分析格式,制作自动生成报告的 Java 程序 [今日中午12:00更新进度] 原文地址:https://www.cnblo

cvpr论文爬取——热词云展示(WEB)

效果图: Python源码(将数据导入数据库): 1 import re 2 import requests 3 import pymysql 4 5 def insertCvpr(value): 6 db = pymysql.connect("localhost", "root", "root", "cvprlist", charset='utf8') # 连接数据库 7 8 cursor = db.cursor() 9 s

Python 爬取 热词并进行分类数据分析-[安全性修复]

日期:2020.03.01 博客期:159 星期日 我打算从三方面去实现安全性的保障! 1.访问的数据库权限 因为毕竟在做项目的时候,只是需要从数据库中抽取数据,并不需要对其进行增加.删除或修改.所以,我们 DBLink 需要使用仅支持复合查询或者简单查询的用户来访问数据库!这样,就不怕代码被恶意篡改了,反正你这个用户只能“读”! 2.访问的语句要实现完整! 这个是怎么一回事呢?就是我们平常使用的 sql 查询语句结构可以是 Select * From ... 这样的结构很容易被推算出我们数据表

[python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pythonpython爬虫正则表达式html知识总结 2016-04-07 06:13 3615人阅读 评论(4) 收藏 举报  分类: Python爬虫(23)  Python基础知识(17)  版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ 这篇文章主要是介绍Pytho

python—多协程爬取糗事百科热图

今天在使用正则表达式时未能解决实际问题,于是使用bs4库完成匹配,通过反复测试,最终解决了实际的问题,加深了对bs4.BeautifulSoup模块的理解. 爬取流程 前奏: 分析糗事百科热图板块的网址,因为要进行翻页爬取内容,所以分析不同页码的网址信息是必要的 具体步骤: 1,获取网页内容(urllib.request)# 糗事百科有发爬虫技术,所以要添加headers,伪装程浏览器 2,解析网页内容,获取图片链接(from bs4 import BeautifulSoup) 3,通过图片链接

【转】class卸载、热替换和Tomcat的热部署的分析

这篇文章主要是分析Tomcat中关于热部署和JSP更新替换的原理,在此之前先介绍class的热替换和class的卸载的原理. 一 class的热替换ClassLoader中重要的方法 loadClass ClassLoader.loadClass(...) 是ClassLoader的入口点.当一个类没有指明用什么加载器加载的时候,JVM默认采用AppClassLoader加载器加载没有加载过的class,调用的方法的入口就是loadClass(...).如果一个class被自定义的ClassLo