博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取全部校园新闻
阅读量:5171 次
发布时间:2019-06-13

本文共 4406 字,大约阅读时间需要 14 分钟。

1.取出一个新闻列表页的全部新闻 包装成函数。

2.获取总的新闻篇数,算出新闻总页数。

3.获取全部新闻列表页的全部新闻详情。

import requestsfrom  bs4 import  BeautifulSoupfrom datetime import datetimeimport localeimport relocale.setlocale(locale.LC_CTYPE,'chinese')def getClickCount(newsUrl):    newsId = re.findall('\_(.*).html', newsUrl)[0].split('/')[1]   #使用正则表达式取得新闻编号    clickUrl = 'http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80'.format(newsId)    clickStr = requests.get(clickUrl).text    return(re.search("hits'\).html\('(.*)'\);",clickStr).group(1))def getNewsContent(content):    f = open('gzccNews.txt','a',encoding='utf8')    f.write(content)    f.close()def getNewDetail(newsUrl):    resd = requests.get(newsUrl)  # 返回response    resd.encoding = 'utf-8'    soupd = BeautifulSoup(resd.text, 'html.parser')    print('标题:' + soupd.select('.show-title')[0].text)    print('链接:'+newsUrl)    newsUrl = newsUrl    info = soupd.select('.show-info')[0].text    time = re.search('发布时间:(.*) \xa0\xa0 \xa0\xa0作者:', info).group(1)    dtime = datetime.strptime(time, '%Y-%m-%d %H:%M:%S')    if info.find('作者:') > 0:        author = info[info.find('作者:'):].split()[0].lstrip('作者:')    else:        author = '无'    if info.find('审核:') > 0:        check = info[info.find('审核:'):].split()[0].lstrip('审核:')    else:        check = '无'    if info.find('来源:') > 0:        source = info[info.find('来源:'):].split()[0].lstrip('来源:')    else:        sourec = '无'    if info.find('摄影:') > 0:        photo = info[info.find('摄影:'):].split()[0].lstrip('摄影:')    else:        photo = '无'    print('发布时间:{}\n作者:{}\n审核:{}\n来源:{}\n摄影:{}'.format(dtime,author,check,source,photo))    clickCount = getClickCount(newsUrl)    print('点击次数:' + clickCount)    content = soupd.select('.show-content')[0].text    getNewsContent(content)    # print(content)def getLiUrl(ListPageUrl):    res = requests.get(ListPageUrl)    res.encoding = 'utf-8'    soup = BeautifulSoup(res.text,'html.parser')    # print(soup.select('li'))    for news in soup.select('li'):        if len(news.select('.news-list-title'))>0:            a = news.a.attrs['href']            getNewDetail(a)firstUrl = 'http://news.gzcc.cn/html/xiaoyuanxinwen/'print('第1页:')getLiUrl(firstUrl)res = requests.get(firstUrl)res.encoding = 'utf-8'soupn = BeautifulSoup(res.text,'html.parser')n =  int(soupn.select('.a1')[0].text.rstrip('条'))//10+1# for i in range(2,n):#     pageUrl = 'http://news.gzcc.cn/html/xiaoyuanxinwen/{}.html'.format(i)#     print('第{}页:'.format(i))#     getLiUrl(pageUrl)#     break

结果截图:

4.找一个自己感兴趣的主题,进行数据爬取,并进行分词分析。不能与其它同学雷同。

import requests,jieba,localefrom  bs4 import  BeautifulSouplocale.setlocale(locale.LC_CTYPE,'chinese')def getKeyWords(text):    str = '''一!“”,。?、;’"',.、\t:\n'''    for s in str:        text = text.replace(s, '')    wordlist = list(jieba.cut(text))    exclude = {
'是','的','在','了','个','和','说',} wordset = set(wordlist) - exclude dict = {} keywords = [] for key in wordset: dict[key] = wordlist.count(key) dictlist = list(dict.items()) dictlist.sort(key=lambda x: x[1], reverse=True) for i in range(5): keywords.append(dictlist[i][0]) return keywordsdef getNewDetail(newsUrl): resd = requests.get(newsUrl) # 返回response resd.encoding = 'gbk' soupd = BeautifulSoup(resd.text, 'html.parser') print('链接:' + newsUrl) print('标题:' + soupd.select('h1')[0].text) content = soupd.select('.box_con')[0].text keywords = getKeyWords(content) print('关键词:{}、{}、{}'.format(keywords[0], keywords[1], keywords[2])) tands = soupd.select('.box01')[0].text print('日期:'+tands.split()[0]) print(tands.split()[1]) print(soupd.select('.edit')[0].text.lstrip('(').rstrip(')')) print(content)def getLiUrl(ListPageUrl): res = requests.get(ListPageUrl) res.encoding = 'gbk' soupn = BeautifulSoup(res.text,'html.parser') # print(soupn.select('li')) for news in soupn.select('.on'): atail = news.a.attrs['href'] a = 'http://legal.people.com.cn/'+atail getNewDetail(a) breakUrl = 'http://legal.people.com.cn/'res = requests.get(Url)res.encoding = 'gbk'soup = BeautifulSoup(res.text,'html.parser')print('第1页:')getLiUrl(Url)for i in range(2,6): pageUrl = 'http://legal.people.com.cn/index{}.html#fy01'.format(i) print('第{}页:'.format(i)) getLiUrl(pageUrl) break

结果截图:

 

posted on
2018-04-11 20:24 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/stcy520/p/8795105.html

你可能感兴趣的文章
从ECMA到W3C
查看>>
软件工程--第十六周学习进度
查看>>
yii2 ActiveRecord多表关联以及多表关联搜索的实现
查看>>
搜狗输入法安装--ubuntu
查看>>
ps/2接口键盘的输入及显示
查看>>
Swift———a Glance(极客学院)笔记
查看>>
【poj3294-不小于k个字符串中最长公共子串】后缀数组
查看>>
java如何获取其它用户登录的真是IP地址
查看>>
Jquery通过指定层次关系获取元素
查看>>
c# for 和 foreach 的区别
查看>>
docfx (一)
查看>>
HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
查看>>
深度学习之前馈神经网络(前向传播和误差反向传播)
查看>>
IEnumerable<T>和IQueryable<T>区别
查看>>
(转)MFC界面风格
查看>>
Centos7 tmux1.6 安装
查看>>
二叉树(三)
查看>>
linux加密文件系统 fsck 无法修复一例
查看>>
【linux配置】VMware安装Redhat6.5
查看>>
AI自主决策——有限状态机
查看>>