python爬取新浪新闻存储到excel

翻译 2017年07月30日 11:06:02


一、运行环境

    (1) BeautifulSoup的导入:pip install BeautifulSoup4
    (2) requests的导入:pip install requests

    (3) re的导入:pip install re
    (4) pandas的导入:pip install pandas


二、完整代码   

# 获取新闻的标题,内容,时间和评论数
import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re
import json
import pandas

def getNewsdetial(newsurl):
    res = requests.get(newsurl)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text,'html.parser')
    newsTitle = soup.select('.page-header h1')[0].text.strip()
    nt = datetime.strptime(soup.select('.time-source')[0].contents[0].strip(),'%Y年%m月%d日%H:%M')
    newsTime = datetime.strftime(nt,'%Y-%m-%d %H:%M')
    newsArticle = getnewsArticle(soup.select('.article p'))
    newsAuthor = newsArticle[-1]
    return newsTitle,newsTime,newsArticle,newsAuthor
def getnewsArticle(news):
    newsArticle = []
    for p in news:
         newsArticle.append(p.text.strip())
    return newsArticle

# 获取评论数量

def getCommentCount(newsurl):
    m = re.search('doc-i(.+).shtml',newsurl)
    newsid = m.group(1)
    commenturl = 'http://comment5.news.sina.com.cn/page/info?version=1&format=js&channel=gn&newsid=comos-{}&group=&compress=0&ie=utf-8&oe=utf-8&page=1&page_size=20'
    comment = requests.get(commenturl.format(newsid))   #将要修改的地方换成大括号,并用format将newsid放入大括号的位置
    jd = json.loads(comment.text.lstrip('var data='))
    return jd['result']['count']['total']


def getNewsLinkUrl():
#     得到异步载入的新闻地址(即获得所有分页新闻地址)
    urlFormat = 'http://api.roll.news.sina.com.cn/zt_list?channel=news&cat_1=gnxw&cat_2==gdxw1||=gatxw||=zs-pl||=mtjj&level==1||=2&show_ext=1&show_all=1&show_num=22&tag=1&format=json&page={}&callback=newsloadercallback&_=1501000415111'
    url = []
    for i in range(1,10):
        res = requests.get(urlFormat.format(i))
        jd = json.loads(res.text.lstrip('  newsloadercallback(').rstrip(');'))
        url.extend(getUrl(jd))     #entend和append的区别
    return url

def getUrl(jd):
#     获取每一分页的新闻地址
    url = []
    for i in jd['result']['data']:
        url.append(i['url'])
    return url

# 取得新闻时间,编辑,内容,标题,评论数量并整合在total_2中
def getNewsDetial():
    title_all = []
    author_all = []
    commentCount_all = []
    article_all = []
    time_all = []
    url_all = getNewsLinkUrl()
    for url in url_all:
        title_all.append(getNewsdetial(url)[0])
        time_all.append(getNewsdetial(url)[1])
        article_all.append(getNewsdetial(url)[2])
        author_all.append(getNewsdetial(url)[3])
        commentCount_all.append(getCommentCount(url))
    total_2 = {'a_title':title_all,'b_article':article_all,'c_commentCount':commentCount_all,'d_time':time_all,'e_editor':author_all}
    return total_2

# ( 运行起始点 )用pandas模块处理数据并转化为excel文档

df = pandas.DataFrame(getNewsDetial())
df.to_excel('news.xlsx')

三、运行结果

 

python3爬虫-爬取新浪新闻首页所有新闻标题

准备工作:安装requests和BeautifulSoup4。打开cmd,输入如下命令pip install requests pip install BeautifulSoup4打开我们要爬取的页面...
  • xiangwanpeng
  • xiangwanpeng
  • 2017年02月20日 11:01
  • 4282

python_爬取新浪新闻

这段代码可以优化的。但我太赖了就写出个雏形 所用到的知识点下面这个是知识点代码小结: #http://news.sina.com.cn/c/nd/2017-07-07/doc-ifyhwehx53...
  • Py_CCY
  • Py_CCY
  • 2017年07月08日 18:25
  • 240

利用scrapy爬取新浪体育新闻的小例子

1、新建项目scrapy startproject tutorial整体结构如下 2、修改items# -*- coding: utf-8 -*-# Define here the models ...
  • shizhengxin123
  • shizhengxin123
  • 2017年05月27日 17:39
  • 1406

Python爬虫学习(一)——爬取新浪新闻

import requests from bs4 import BeautifulSoup from datetime import datetime import re import json im...
  • picway
  • picway
  • 2017年10月26日 20:55
  • 415

Python_网络爬虫(新浪新闻抓取)

爬取前的准备: BeautifulSoup的导入:pip install BeautifulSoup4requests的导入:pip install requests下载jupyter note...
  • gongxiaojiu
  • gongxiaojiu
  • 2017年07月30日 13:28
  • 272

新浪新闻爬虫程序

下面是该爬虫的关键代码,查看更多的源代码请点击这里https://github.com/lxf44944/sinaNews_crawler/...
  • lxf_44944
  • lxf_44944
  • 2015年02月13日 15:11
  • 1976

网页数据抓取之新浪新闻数据

这里根据自己的需求抓取了部分数据 ,可以根据自己的需求做相应改动: package com.atman.baiye.store.utils; import java.net.URLDecoder; ...
  • awu_scanner
  • awu_scanner
  • 2017年01月22日 16:27
  • 110

【Python】爬虫爬取各大网站新闻(一)

作者博客地址:http://andyheart.mePython爬虫一步一步爬取文章背景最近在学习机器学习算法,分为回归,分类,聚类等,在学习过程中苦于没有数据做练习,就想爬取一下国内各大网站的新闻,...
  • jie310300215
  • jie310300215
  • 2016年03月27日 10:06
  • 20822

python 爬虫——scrapy框架爬取新浪娱乐文本初探

preface: 最近师兄的任务需求,需要点新浪娱乐的新闻文本,通过半监督找到人物与人物之间的关系以充实训练语料库,方便后续实验,并且爬取文本的技能也是做研究的基础,之前也用过scrapy试着爬取动态...
  • u010454729
  • u010454729
  • 2015年10月10日 21:50
  • 3436

Python爬虫:抓取新浪新闻数据

案例一 抓取对象: 新浪国内新闻(http://news.sina.com.cn/china/),该列表中的标题名称、时间、链接。 完整代码: from bs4 import Beautif...
  • bestdwd
  • bestdwd
  • 2017年05月31日 12:29
  • 771
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python爬取新浪新闻存储到excel
举报原因:
原因补充:

(最多只允许输入30个字)