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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值