爬虫大作业

1.选一个自己感兴趣的主题。

2.用python 编写爬虫程序,从网络上爬取相关主题的数据。

3.对爬了的数据进行文本分析,生成词云。

4.对文本分析结果进行解释说明。

5.写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。

6.最后提交爬取的全部数据、爬虫及数据分析源代码。

import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re
import jieba

def getNewsDetail(newsurl):#获取新闻详情
    resd=requests.get(newsurl)
    resd.encoding='utf-8'
    soupd=BeautifulSoup(resd.text,'html.parser')

    click=soupd.select('.like')[0].text.split(" ")[0]
    title = soupd.select('h1')[0].text
    info=soupd.select('.pdate')[0].text
    dt=datetime.strptime(info.lstrip('发布时间:')[0:19],'%Y-%m-%d %H:%M:%S')
    author=soupd.select('p')[0].text.split(" ")[1].strip('<p>')
    delcontent=soupd.select('p')[0].text
    newscontent=soupd.select('.maintext')[0].text.lstrip(delcontent)

    keyWords=getKeyWords(newscontent)

    print(dt)
    print(title)
    print(click)
    print(author)
    print(newscontent)
    print(keyWords)

def getKeyWords(newscontent):#获取新闻关键词
    newscontent = ''.join(re.findall('[\u4e00-\u9fa5]', newscontent))
    wordSet=set(jieba._lcut(newscontent))
    wordDict={}
    for i in wordSet:
        wordDict[i]=newscontent.count(i)
    delList=[]
    for i in wordDict.keys():
        if len(i)<2:
            delList.append(i)
    for i in delList:
        del wordDict[i]
    dictList=list(wordDict.items())
    dictList.sort(key=lambda item: item[1], reverse=True)
    keyWords=[]
    for i in range(20):
        keyWords.append(dictList[i][0])
    return keyWords


newsurl="http://news.gdufe.edu.cn/11499"
getNewsDetail(newsurl)

运行结果:

生成词云:

 

posted @ 2018-04-30 20:17  191钟菲菲  阅读(182)  评论(0编辑  收藏  举报