python获取新浪新闻 - Go语言中文社区

python获取新浪新闻


1、获取新浪新闻的标题以及要闻,保存到txt中(目录以及文件名可以自定义);

2、新闻包括国内新闻、国际新闻、社会新闻(依据提示选择);

3、运行环境,python2.7、win8.1(64位)、IDE(pycharm4.5)。

声明:仅用作学习交流

=以下是完整代码========

#coding:UTF-8

import json
import re
import os
import requests
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

def get_pages(newclass):
        '''获取该类新闻的总页数'''
        page = 1
        url = 'http://api.roll.news.sina.com.cn/zt_list?'
        params = {'channel':'news',
                'cat_1':newclass,
                'cat_2':'',
                'level':'',
                'show_ext':'1',
                'show_all':'1',
                'show_num':'1000',
                'tag':'1',
                'format':'json',
                'page':page
                }
        html = requests.get(url,params=params).content
        total = int(re.findall('"total":"(.*?)"',html)[0]) #获取该类新闻总条数

        #由每次请求1000条新闻,计算出总页数
        if total%1000 != 0:
            pages = (total/1000) + 1
        else:
            pages = total/1000
        return pages

def get_new(newclass='gnxw',page=1):
        '''获取新闻标题与要闻'''
        new = []
        url = 'http://api.roll.news.sina.com.cn/zt_list?'
        params = {'channel':'news',
                'cat_1':newclass,
                'cat_2':'',
                'level':'',
                'show_ext':'1',
                'show_all':'1',
                'show_num':'1000',#每次请求1000个数据
                'tag':'1',
                'format':'json',
                'page':page
                }
        html = requests.get(url,params=params).content
        html = re.findall('[{(.*?)}]',html)[0]
        html = html.split('},{')
        for s in html:
            s = '{' + s + '}'
            s = json.loads(s)

            #标题(title)与要闻用空格隔开保存到列表new里
            new.append(s['title'].replace('n','')+' '+s['ext5'].replace('n','')+'n')
        return new

def Svae_new(page,path='D:/News/',filename='new.txt'):
    '''保存新闻到txt文档里面'''
    if not os.path.exists(path):
        os.mkdir(path)
    f = open(path+filename,'a')
    new = get_new(newclass,page)
    for i in new:
        f.write(i)
    f.close()
    print str(page)+'/'+str(pages)



print u'''
========================
    0:国内新闻
    1:国际新闻
    2:社会新闻
========================'''

news = ['gnxw','gjxw','shxw']
newclass = news[input(u'请输入数字获取对应新闻:')]
pages = get_pages(newclass)

for page in range(1,pages+1):
    Svae_new(page,filename=newclass+'.txt')

==================================================================

在对应文件夹下得到以下文件(信息量还是很大的,我这里仅仅抓取一部分):
这里写图片描述
这里写图片描述

欢迎访问我的个人站点:http://bgods.cn/

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/songzhilian22/article/details/49081581
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 18:25:46
  • 阅读 ( 1288 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢