python爬虫——对爬到的数据进行清洗的一些姿势(5)

摘要:
要成为一个爬虫,你需要使用数据。如果要分析数据,请首先清理数据。数据清理包括删除无用的数据列和维度、删除相同的数据和更正数据。从各种新闻网站,你可以爬上去重复新闻……这可以。我去这个网站是为了挖掘我爬到的新闻信息http://blog.reetsee.com/archives/237虽然没有进一步的数据挖掘,但最好处理数据。Python结结巴巴的分词可用于处理重复的新闻

  做爬虫,当然就要用数据。想拿数据进行分析,首先清洗数据。这个清洗数据包括清除无用数据列和维度,删除相同数据,对数据进行勘误之类的。

  从各大不同新闻网站可以爬到重复新闻。。。这个可以有。之前为了对爬到的新闻信息进行深度挖掘去了这个网站http://blog.reetsee.com/archives/237虽说没有对数据进行更进一步的挖掘,好歹有处理数据。处理重复新闻可以使用python结巴分词。统计分词信息,词典差距过大,词典频度比差距过大,都可以算不同新闻。

  对新闻内容字符串进行检查需要这3种操作:提取分词,统计频度和查重。

  提取分词函数:

python爬虫——对爬到的数据进行清洗的一些姿势(5)第1张python爬虫——对爬到的数据进行清洗的一些姿势(5)第2张
def ExtractTagsFromContent(content, num_of_tags):
    tags = jieba.analyse.extract_tags(content, topK = num_of_tags)
    return tags
View Code

  统计频度函数:

python爬虫——对爬到的数据进行清洗的一些姿势(5)第3张python爬虫——对爬到的数据进行清洗的一些姿势(5)第4张
def GetTermFreqFromContent(tags, content):
    tfdict = {}
    for tag in tags:
        tfdict[tag] = 0 #把已出现的词频度初始化为0

    seg_list = jieba.cut(content) #把新闻内容切分成词
    has_words = False
    for word in seg_list:
        if tfdict.has_key(word):
            tfdict[word] = tfdict[word] + 1 #统计频度
            has_words = True

    if has_words:
        return tfdict
    else:
        return None
View Code

  余弦相似度函数:

python爬虫——对爬到的数据进行清洗的一些姿势(5)第5张python爬虫——对爬到的数据进行清洗的一些姿势(5)第6张
def CosinSimilarity(vector1, vector2):
    if len(vector1) != len(vector2):
        print "Error: vector1:" + vector1 + " and vector2: " + vector2 + "have different dimensions" 
        return None

    numerator = 0.0
    v1_square = 0.0
    v2_square = 0.0
    for i in range(0, len(vector1)):
        numerator += vector1[i] * vector2[i]
        v1_square += vector1[i] * vector1[i]
        v2_square += vector2[i] * vector2[i]
    denominator = math.sqrt(v1_square * v2_square)
    if denominator == 0:
        return None
    else:
        return numerator / denominator
View Code

  查重函数:

python爬虫——对爬到的数据进行清洗的一些姿势(5)第7张python爬虫——对爬到的数据进行清洗的一些姿势(5)第8张
def FindSimilarPassageFromSet(news_set, example_tf):
    heap = []
    tags = []
    for tag in example_tf.keys():
        tags.append(tag)

    for file_path in news_set:
        tf = GetTermFreqFromFile(tags, file_path)
        if tf == None:
            continue
        similarity = CosinSimilarityForDict(example_tf, tf)
        # 插入堆
        if not similarity == None:
            heap.append(SimilarPassage(similarity * -1.0, file_path))
    # 把最高相似度弹出(有*-1的关系,最小弹出实际是最大弹出)
    heapq.heapify(heap)
    if len(heap) == 0:
        return None
    result = heapq.heappop(heap)
    if result.Relevant():
        print "Similarity: " + str(result.similarity)
        news_set.discard(result.file_path)
        return result.file_path
    else:
        return None
View Code

  然后新闻就成功去重了。

  爬新浪微博的数据,wap端比较容易爬,而且数据也较为纯净。

  不过根据关键词爬出来的数据还是有些奇怪的:

python爬虫——对爬到的数据进行清洗的一些姿势(5)第9张python爬虫——对爬到的数据进行清洗的一些姿势(5)第10张
:春季番最新销量:《机甲少女》热卖 《樱花任务》暴死  被认为是“买手办送光碟”的《机甲少女FRAME ARMS GIRL》第1卷不负众望取得了好成绩。而P.A.WORKS动画公司继《花开伊吕波》《白箱》之后的第三部工作题材动画《樱花任务》销量仅为1392张,在春季番中属于垫底。<br/>2017年春季番销量及排名情况(截止2017年7月23日)<br/><br/>第1名:《碧蓝幻想》 53571张<br/><br/>第2名:《偶像大师 灰姑娘女孩剧场》 42959张<br/><br/>第3名:《埃罗芒阿老师》 10417张<br/><br/>第4名:《高校星歌剧》第2季 9827张<br/><br/>第5名:《机甲少女FRAME ARMS GIRL》 7614张<br/><br/>第6名:《进击的巨人》第2季 7525张<br/><br/>第7名:《王室教师海涅》 6532张<br/><br/>第8名:《夏目友人帐》第6季 4862张<br/><br/>第9名:《我的英雄学院》第2季 4145张<br/><br/>第10名:《sin七大罪》 3305张<br/><br/>第11名:《Re:CREATORS》 2631张<br/><br/>第12名:《不正经的魔术讲师与禁忌教典》 2485张<br/><br/>第13名:《末日时在做什么?有没有空?可以来拯救吗?》 1674张<br/><br/>第14名:《剑姬神圣谭》 1656张<br/><br/>第15名:《武装少女》 1425张<br/><br/>第16名:《樱花任务》 1392张<br/><br/>第17名:《时钟机关之星》 896张<br/><br/>第18名:《怪怪守护神》 834张<br/><br/>第19名:《覆面系Noise》 823张<br/><br/>第20名:《喧哗番长乙女》 673张<br/><br/>第21名:《恋爱暴君》 556张
我说的是任天堂的游戏arms...
python爬虫——对爬到的数据进行清洗的一些姿势(5)第11张python爬虫——对爬到的数据进行清洗的一些姿势(5)第12张
:可惜,lost stars没有音频版的,不能更好听!实力唱将!幸好,open arms有啊<a href="/n/M%E9%B9%BFM">@M鹿M</a><a href="https://weibo.cn/sinaurl?f=w&amp;u=http%3A%2F%2Ft.cn%2FRorgJGY&amp;ep=FerXXxPbm%2C1763629124%2CFerXXxPbm%2C1763629124">触发(Set it off)</a> 打榜就行!<a href="http://weibo.cn/pages/100808topic?extparam=%E4%BA%9A%E6%B4%B2%E6%96%B0%E6%AD%8C%E6%A6%9C&amp;from=feed">#亚洲新歌榜#</a> 现在参与打榜,还有机会获得8月27日举办的亚洲新歌榜2017年度盛典门票! ​​​
看来arms这个关键词太有歧义了
python爬虫——对爬到的数据进行清洗的一些姿势(5)第13张python爬虫——对爬到的数据进行清洗的一些姿势(5)第14张
:发售中的Switch平台游戏《ARMS》公开全新TVCM,在近日任天堂公开的Q1财报中《ARMS》成功突破百万销量,期待今后的表现。[鼓掌] <a href="https://weibo.cn/sinaurl?f=w&amp;u=http%3A%2F%2Ft.cn%2FR9yV0Fz&amp;ep=FerBM7lQy%2C1764127957%2CFerBM7lQy%2C1764127957">秒拍视频</a> ​​​
有个正常的了。。。不过后面的话题符号明显就是在捣乱
python爬虫——对爬到的数据进行清洗的一些姿势(5)第15张python爬虫——对爬到的数据进行清洗的一些姿势(5)第16张
:<a href="http://weibo.cn/pages/100808topic?extparam=%E5%AD%A6%E5%AD%90%E9%A3%8E%E9%87%87&amp;from=feed">#学子风采#</a> 【厉害了, 集大学子获第41届ACM国际大学生程序设计竞赛亚洲区域赛铜奖】日前,ACM/ICPC(国际大学生程序设计竞赛)亚洲区域赛在青岛落下帷幕。北京大学、复旦大学、武汉大学、厦门大学等115所高校的186支代表队参赛。经过激烈角逐,由我校计算机工程学院2014级学生吴晓仁、阚航、陈明振组成的集大ACM集训队(指导教师:林阳斌)获得一枚铜牌。<br/><br/>  ACM国际大学生程序设计竞赛(简称ACM-ICPC)是由国际计算机界具有悠久历史的权威性组织ACM学会(Association for Computing Machinery)主办,世界上公认的规模最大、水平最高、参与人数最多的国际大学生程序设计竞赛,被业界称为IT界的“奥林匹克”竞赛。 <a href="/n/%E9%9B%86%E5%A4%A7%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%B7%A5%E7%A8%8B%E5%AD%A6%E9%99%A2%E5%AD%A6%E7%94%9F%E4%BC%9A">@集大计算机工程学院学生会</a>
后面那段人人皆知的介绍能不能去掉啊。。。
python爬虫——对爬到的数据进行清洗的一些姿势(5)第17张python爬虫——对爬到的数据进行清洗的一些姿势(5)第18张
:ACM-ICPC竞赛算法类型 - 海岛Blog - CSDN博客 <a href="https://weibo.cn/sinaurl?f=w&amp;u=http%3A%2F%2Ft.cn%2FRK1sG4m&amp;ep=FdolV9DkF%2C6286510827%2CFdolV9DkF%2C6286510827">http://t.cn/RK1sG4m</a> ​​​
一看就知道这只是博客文章的入口。。。如果标题不对,想除杂就更麻烦了
python爬虫——对爬到的数据进行清洗的一些姿势(5)第19张python爬虫——对爬到的数据进行清洗的一些姿势(5)第20张
:【我校学子在ACM国际大学生程序设计竞赛全国邀请赛上摘金】2017年5月,ACM国际大学生程序设计竞赛(ACM-ICPC)全国邀请赛在西北工业大学举行。由我校学生李志远、徐经纬、陈笑天三名同学组成的队伍“challenge”夺得金奖,捧回了我校历史上的第一枚ACM-ICPC金牌。详情可见<a href="https://weibo.cn/sinaurl?f=w&amp;u=http%3A%2F%2Ft.cn%2FRol0sxX&amp;ep=F9Vlbao8b%2C1845850033%2CF9Vlbao8b%2C1845850033">http://t.cn/Rol0sxX</a> ​​​
详情的数据是否有用?要不要特意再写一次分析策略?
python爬虫——对爬到的数据进行清洗的一些姿势(5)第21张python爬虫——对爬到的数据进行清洗的一些姿势(5)第22张
:【我校学子在ACM国际大学生程序设计竞赛全国邀请赛上摘金】2017年5月,ACM国际大学生程序设计竞赛(ACM-ICPC)全国邀请赛在西北工业大学举行。由我校学生李志远、徐经纬、陈笑天三名同学组成的队伍“challenge”夺得金奖,捧回了我校历史上的第一枚ACM-ICPC金牌。详情可见<a href="https://weibo.cn/sinaurl?f=w&amp;u=http%3A%2F%2Ft.cn%2FRol0sxX&amp;ep=F9Vlbao8b%2C1845850033%2CF9Vlbao8b%2C1845850033">http://t.cn/Rol0sxX</a> ​​​
搜索结果收录了2次。。。
python爬虫——对爬到的数据进行清洗的一些姿势(5)第23张python爬虫——对爬到的数据进行清洗的一些姿势(5)第24张
:等等,考虑到今后将推出的游戏,难不成NB社Switch上第三方一哥?回想起来马车8dx和arms后面都有对NBGI的特别鸣谢,真是可怕极了 <a href="https://weibo.cn/sinaurl?f=w&amp;u=http%3A%2F%2Ft.cn%2FRU14lZk&amp;ep=FeUqn8BXP%2C1886986281%2CFeUqn8BXP%2C1886986281">日本·横滨</a> ​​​
要不要把地址也作为变量录入呢?

  上面的问题只是一部分。。。如果爬其他数据还会有更多的问题要考虑。有空再考虑一下清洗策略

免责声明:文章转载自《python爬虫——对爬到的数据进行清洗的一些姿势(5)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇django 解决白名单MongoDB 将字符串日期改为Date类型日期的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python判断字符串是否为空和null

1、使用字符串长度判断 len(s==0)则字符串为空 test1 = '' if len(test1) == 0: print('test1为空串') else: print('test非空串,test='+test1) 2、isspace判断字符串是否只由空格组成 >>> str="" >>> pr...

python(数字Number)

数字 Python 数字数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间 Python 支持三种不同的数值类型: 整型(int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Lo...

python(一):python语言基础

一、python语言基本的8个要素 Python语言的8个要素:数据类型、对象引用、组合数据类型、逻辑操作符、运算操作符、控制流语句、输入/输出、函数的创建与引用。除此之外还有一个非常重要且无处不在的要素:对象。实际上,在所有的语言当中,这种要素结构几乎一样。   1.要素1--数据和对象类型 python的数据类型是指内置数据类型。python基本的内置...

python学习笔记-Pycharm远程连接服务器的Python虚拟环境(Virtualenv)

Virtualenv可以作为一个独立的Python虚拟环境工具,并能够建立多个相互独立,互不影响的Python工作环境。 主要解决在运行多个项目时,由于它们对应的运行环境需求不同,可能会导致项目无法正常运行的问题。 服务器设置内容: 安装Virtualenv命令: pip install virtualenv 给自己的项目创建python虚拟环境: vi...

python连接mysql的驱动

对于py2.7的朋友,直接可以用MySQLdb去连接,但是MySQLdb不支持python3.x。这是需要注意的~ 那应该用什么python连接mysql的驱动呢,在stackoverflow上有人解答: (1)可以尝试使用PyMySQL,但它很慢,最新的版本可以支持python 3.4. 地址:http://www.pymysql.org/ (2)还可以...

基于django2.2的网页构建

安装django pip install django==2.2 建一个在线商城的项目 django-admin startproject pyshop 启动项目 python manage.py runserver 页面访问效果 http://127.0.0.1:8000 建议一个项目的app 产品 products djan...