CSDN博客分类系统的分析与实现

简介: 一:爬虫爬取csdn博客各个系列的博文和标签        在这里只给出主要代码:        #coding:utf-8 #第一部分:得到首页博客专家各个系列链接 #=======================================================...

一:爬虫爬取csdn博客各个系列的博文和标签

       在这里只给出主要代码:

      
#coding:utf-8

#第一部分:得到首页博客专家各个系列链接
#===============================================================================

import urllib2
from bs4 import BeautifulSoup
import os


def getPage(href): #伪装成浏览器登陆,获取网页源代码
    headers = {  
        'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'  
    }  
    req = urllib2.Request(  
        url = href ,
        headers = headers  
    )  
    
    #content = urllib2.urlopen(req).read()
    if urllib2.urlopen(req).read():
        return urllib2.urlopen(req).read()

def getText(href,count):   #得到博客内容和博主的相关信息
    soup = BeautifulSoup(getPage(href))
    div = soup.find("div",id="article_details",class_="details")
    #print div
    
#写博文标签---------------------------------------
    tag = div.find("div",class_="tag2box")             #文章标签
    if tag:
        for a in tag.findAll("a"): 
            #print a.get_text()                          #标签
            aTag = a.get_text()
            fp = open("%s\\tag.txt" % count,"a")
            fp.write(aTag.encode('utf-8'))
            fp.write("\n")
            fp.close()
#写博文标题和内容-----------------------------------------------------   
    title = div.find("div",class_="article_title")  #文章标题
    content = div.find("div",id="article_content",class_="article_content") #内容
    titleName = title.h1.span.a.get_text().strip()       #标题
    #print titleName
    cont = content.get_text()   
    #print cont                       #内容
    fp = open("%s\\content.txt" % count,"a")
    fp.write(titleName.encode('utf-8'))
    fp.write(cont.encode('utf-8'))
    fp.close()
#写博主的访问量排名等--------------------------------------------------
    div = soup.find("div",id="panel_Profile",class_="panel")
    if div:
        ul_1 = div.find("ul",id = "blog_rank")
        
        fp = open("%s\\aother.txt" % count,"a")
        ul_1_List = ul_1.findAll("li")
        visit = ul_1_List[0].get_text()
        fp.write(visit.encode("utf-8"))
        fp.write("\n")
        #print ul_1_List[0].get_text()                 #访问量

        score = ul_1_List[0].get_text()
        fp.write(score.encode("utf-8"))
        fp.write("\n")
        #print ul_1_List[0].get_text()                   #积分

        num = ul_1_List[3].get_text()
        fp.write(num.encode("utf-8"))
        fp.write("\n")
        #print ul_1_List[3].get_text()                 #排名
  
        ul_2 = div.find("ul",id = "blog_statistics")
        ul_2_List = ul_2.findAll("li")
        
        #print ul_2_List[0].get_text()        #原创文章数
        ower = ul_2_List[0].get_text()
        fp.write(ower.encode("utf-8"))
        fp.write("\n")
        
        #print ul_2_List[1].get_text()           #转载文章数 
        fromAnother = ul_2_List[2].get_text()
        fp.write(fromAnother.encode("utf-8"))
        fp.write("\n")
        
        #print ul_2_List[2].get_text()             #译文文章数
        translator = ul_2_List[2].get_text()
        fp.write(translator.encode("utf-8"))
        fp.write("\n")
        
        #print ul_2_List[3].get_text()             #评论条数
        talk = ul_2_List[3].get_text()
        fp.write(talk.encode("utf-8"))
        fp.write("\n\n")
        fp.close()
#------------------------------------------------------------------------


if __name__=="__main__":
    for count in range(10,11):
        fp = open("%s.txt" % count,"r")
        hrefList = fp.readlines()
        for href in hrefList:
            print href.strip()
            getText(href.strip(),count)
        print count , "is  Ok ==========================================="

二:对其进行词频统计,找出频率最高的N个词,写入文件(主要是为第三步分类提供训练的数据集PS:小编的训练集不是太准确,各路大神若有好的意见可以给指导指导)

      在这里简化为使用MapReduce程序统计tag

三:使用贝叶斯分类算法进行分类

        贝叶斯算法原理请参考:http://blog.csdn.net/gamer_gyt/article/details/47205371

        Python代码实现请参考:http://blog.csdn.net/gamer_gyt/article/details/47860945

        分类代码实现如下:     

#encoding:utf-8

from numpy import *


#构造文档列表和标签列表
def loadDataSet():
    wordList = []
    typeList = [0,1,2,3,4,5,6,7,8,9]#0~9代表10种类型
    for i in range(1,11):
        lineList2 = []
        fp = open("tagDispose\%s.txt" % i,"r")
        lineList1 = fp.readlines()
        for j in range(len(lineList1)):
            strWord = lineList1[j].strip()
            if ord(strWord[0])0:  #去除标点符号
                if ord(word[0])    

相关文章
|
7月前
|
数据采集 自然语言处理 前端开发
让大模型分析csdn文章质量 —— 提取csdn博客评论在文心一言分析评论区内容
让大模型分析csdn文章质量 —— 提取csdn博客评论在文心一言分析评论区内容
102 6
|
7月前
|
人工智能 数据可视化
【数据分享】维基百科Wiki负面有害评论(网络暴力)文本数据多标签分类挖掘可视化
【数据分享】维基百科Wiki负面有害评论(网络暴力)文本数据多标签分类挖掘可视化
|
7月前
|
机器学习/深度学习 编解码 数据挖掘
实例分割综述总结综合整理版
实例分割综述总结综合整理版
215 0
实例分割综述总结综合整理版
|
7月前
|
SEO
技术写作:漏斗内容策略、认知博客、支柱内容、研究报告、通用门控内容、电子书和教程
顶部漏斗是指客户旅程中的认知阶段,他们第一次接触到企业或产品。在这个阶段,他们意识到自己存在问题,并开始寻找信息或解决方案。此阶段的内容旨在通过提供与他们的问题相关的解决方案或有价值的信息来吸引潜在客户的注意力和兴趣。这种内容通常是广泛而丰富的,而不是针对产品的。其目的是在建立信任和品牌权威的同时,告知和教育受众。
106 5
|
机器学习/深度学习 网络架构
「拖拽」就能实现精准P图的DragGAN,论文作者亲自揭秘技术了
「拖拽」就能实现精准P图的DragGAN,论文作者亲自揭秘技术了
142 0
|
数据采集 Python Web App开发
关于文章《爬取知网文献信息》中代码的一些优化
关于文章《爬取知网文献信息》中代码的一些优化
关于文章《爬取知网文献信息》中代码的一些优化
|
数据可视化 数据挖掘 C++
RNAseq|WGCNA-组学数据黏合剂,代码实战-一(尽)文(力)解决文献中常见的可视化图
RNAseq|WGCNA-组学数据黏合剂,代码实战-一(尽)文(力)解决文献中常见的可视化图
280 0
基于内容的图像检索系统 课设总结分析 00结果展示
基于内容的图像检索系统 课设总结分析 00结果展示
67 0
基于内容的图像检索系统 课设总结分析 00结果展示
|
存储 数据可视化 程序员
选择文库系统的时候需要重点注意和对比哪些东西?
本人程序员出身,接近15年的代码经验,对互联网产品和运营也一直在实践和研究,尤其是对文库产品有着深度理解,因为我自己也一直在运营文库项目。下面是我站在一个普通站长角度给出的一些经验,如果你也想做一个文库网站或文库平台,需要选择一套文库系统产品,请从下面几点出发去做对比,最终做出正确选择。
选择文库系统的时候需要重点注意和对比哪些东西?
|
机器学习/深度学习 数据可视化 数据库
木舟总结 | 2021年推文笔记分类汇总
木舟总结 | 2021年推文笔记分类汇总
240 0