对新闻数据的分析与可视化

        该任务是在大学本科的时候的一个小作业,主要是对湾湾的新闻数据进行一个采集分析与可视化,任务比较简单。任务可分为两个部分,一个是爬取中时新闻网站的数据,二是对该数据进行处理与分析。

一、爬取数据数据:

        没有数据,一切等于零。爬取数据我选择的新闻网站时中时,一是因为这是可以少数可以访问到的湾湾的新闻网站。我们想要有针对性的爬取数据,就是要利用该网站的搜索功能。我的逻辑思路是这样的,当输入一个关键词时候,网站自动去匹配整个新闻网的新闻数据,当新闻数据中出现该关键词就会被筛选出来,代码要实现的功能就是去翻页去爬取每页的新闻链接。

        爬取的方式也很简单暴力,分两步,第一步先翻页,一页一页抓取网页的链接,第二步,通过这些链接去深度的爬取里面的内容,就相当于点击进去找到里面的正文。上代码:

def spiderbig(name,page):
    num=0
    hrefs=[]
    headers = {
            'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36",
        }
    for i in range(1,page+1):
        url = 'https://www.chinatimes.com/Search/'+str(name)+"?"+"page="+str(i)
        response = requests.get(url, headers=headers, timeout=600)
        html = etree.HTML(response.text)

        # hrefs = html.xpath('//div[@class="category"]/a/text()')
        lables = html.xpath('//div/div[@class="category"]/a/text()')
        # print(lables)

        for i in range(1,len(lables)+1):
            if lables[i-1]!=None:
                ptah='//li['+str(i)+']/div/div/div[2]/h3[@class="title"]/a/@href'
                href= html.xpath(ptah)
                hrefs=href+hrefs
                num+=1
    print("此类新闻共"+str(num)+'条')
    return hrefs

        这是第一步,先用python爬取大标题链接,给他命名为spiderbig函数,英文不好就暂且这样吧。觉得比较简单的代码了,也比较好好理解。

url = 'https://www.chinatimes.com/Search/'+str(name)+"?"+"page="+str(i)

#通过尝试发现网站的规律       str(name)是输入进来的关键词     str(i)是为了翻页

        之后就是通过最常规的request、etree代码,最后用xpath去定位,所有的爬虫觉得差不多都是这样。之后进入下一步,该函数已经把搜索到的所有新闻数据的网址进行了搜集,我们需要干的就是进一步通过这些网址,去爬取正文。

def spiderdeep(url):
    headers = {
            'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36",
        }
    print("爬取网页:"+url)
    response = requests.get(url, headers=headers, timeout=600)
    html = etree.HTML(response.text)
    # print(response.text)
    key=html.xpath('//div[@class="article-hash-tag"]/span/a/text()')
    title =html.xpath('//h1[@class="article-title"]/text()')
    content=html.xpath('//div[@class="article-body"]/p/text()')
    time= html.xpath('//header/div/div[1]/div/div/time/span[2]/text()')
    print(title,key,time)
    return title,content,key,time

        有了spiderbig,但不一定有spidersmall。对新闻网址进行深度的爬取,爬取的内容有新闻的标题(title),正文(content),关键词(key),时间(time)。对应的xpth路径可以去看看,我就不给大家展示了。

二、 数据处理与可视化:

        主要涉及有两个部分进行联动展示,一个是把地名当成关键词,爬取所有和当地有关的新闻数据进行分析。用的就是普通的html和echarts工具做的简单的大屏。    

         联动的可视化,当点击湾湾的某个市时,左面的词云图和右面的饼图都会进行更新,显示出该市新闻的关键词和该市新闻的分类,中间的湾湾热力图则展示了各个市新闻数量的多少。

        第二部分是对湾湾人物名字当成关键词,爬取所有和该人物有关的新闻数据进行分析。如下图所示,中间的有许多湾湾的关键人物图片的蓝绿黑分别代表不同团队,点击某个人物也会进行一系列的联动,右边的饼图代表与他有关新闻的一个分类。

        审美能力不高,能出结果就行,处理新闻数据的代码后续再写,包括对新闻数据的关键词提取,情感分析。不足之处请大家批评指正,谢谢大家。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值