美文网首页程序员
汇总!我整理了大数据入门帖子200篇并用python分析了一下

汇总!我整理了大数据入门帖子200篇并用python分析了一下

作者: 金哥数据分析 | 来源:发表于2018-07-28 19:38 被阅读69次
    部分大数据入门帖子

    000

    我通过 数据挖掘入门,自学人工智能,python入门,nlp是什么,统计学入门,大数据入门,爬虫是什么意思,学习大数据要什么基础,数据分析师适合女生嘛,自学大数据该怎么入手等63个入门相关关键问题,找了200篇左右的高票入门帖子。我想通过python自动抓取这些帖子每天的访问量变化,分析出这些帖子的商业价值。
    那么我是怎么做的呢?

    001

    因为我的帖子信息整理在excel里,我把它们存储成csv,以便python可以读取,要得到文章的阅读数,能通过python抓取网页,分析网页中的阅读数得到数字,所以要把csv里的url取到python里变成数组

    import csv
    def get_all_urls():
        csv_reader=csv.reader(open("/.../url100.csv"))
        r = []
        for row in csv_reader:
            if row[1] == 'url' or row[1] == '':
                continue
            r.append(row)
            
        return r
    

    每个网站文章页的格式不一样,意味着每个网站我们要写一个获取阅读数的方法对吧!所以我们需要一个辅助函数,拿帖子的url分析出这个帖子的域名,根据域名才能选择正确的获取方法哦~~

    def get_domain(url):
        domain = (url.split("/")[2])
        return {
            "www.jianshu.com":"简书",
            "blog.csdn.net":"CSDN",
            "www.zhihu.com":"知乎",
            "zhidao.baidu.com":"百度知道",
            "www.cnblogs.com":"CNblog",
            "www.sohu.com":"搜狐",
            "jingyan.baidu.com":"百度经验",
            "blog.jobbole.com":"伯乐",
            "www.douban.com":"豆瓣",
        }.get(domain,"未知"), domain
    

    OK!!我们的两个辅助方法都有了。

    002

    本文的重头戏来了~~,核心的方法 get_read_count(url, domain),看看名字就知道了,根据url和域名获取文章点击数。咱的思路是这样的,第一天,获取一遍所有帖子的,第二天再获取一遍,3,4,5,6天。这样,每天的每个帖子的阅读数变化就出来啦。
    说着容易,做起来坑不少。

    • 坑1 我们是用requests模块get方法获取的网页全文,很多网站都会判断是不是正常的浏览器访问,咱们需要把headers写成跟浏览器请求一样,如下:
     headers = {
                   "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
                 }
       r = requests.get(url,headers=headers)
    #     print(r.text)
    

    得到了网页内容,就该xpath上场了,先分析下阅读数的html特征,我们一般可以用xpath得到阅读数,比如:

     if domain == 'blog.csdn.net': 
            result = root.xpath("//span[@class='read-count']/text()")
            return (result[0].split(":")[1])
    
    • 坑2 但也有很多网站用了js的方法动态获取阅读数,此时就需要动一些小小的脑筋了,此处只放出一个小例子:
    if domain == 'www.xxx.com':
            result = root.xpath("//span[@class='read-num']/text()")
            m = re.search(r'news_id: \"\d+', r.text)
            qid = (m.group().split(": \"")[1])
    
            pvurl = "https://v2.xxx.com/public-api/articles/" + qid + "/pv?callback=jQuery112406240523630131836_1532664955380&_=1532664955381"
            # print(pvurl)
            pv = requests.get(pvurl, {
                    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
                    ,"Referer":url
                })
            return (pv.text.split("(")[1].split(")")[0])
    

    基本思路就是这样:去找到这个文章的阅读数的请求,自己用python拼装请求,得到内容。

    003

    好,锅也预备了,菜也该炒了。最后一步每天遍历访问一下:

    urls = get_all_urls()
    # print(urls)
    for i in range(len(urls)):
        title = urls[i][0]
        url = urls[i][1]
    #     print(url)
        doaminName, domain = (get_domain(url))
        count = (get_read_count(url, domain))
        print(url + "," + doaminName + "," + count)
    

    004

    新鲜的数据来了~~~


    只列出增长最高的一些数据

    最后得出总计1.6w多人一天来看过这些文章,价值多少呢?

    005

    需要全部帖子的,需要完整分析程序的,或正在自学大数据机器学习的,可以戳下面的连接找我,我叫API1024戳我

    相关文章

      网友评论

        本文标题:汇总!我整理了大数据入门帖子200篇并用python分析了一下

        本文链接:https://www.haomeiwen.com/subject/djxamftx.html