python爬取新浪新闻存储到excel
来源:互联网 发布:js正则去掉html标签 编辑:程序博客网 时间:2024/05/16 19:55
一、运行环境
- (1) BeautifulSoup的导入:pip install BeautifulSoup4
(2) requests的导入:pip install requests
- (3) re的导入:pip install re
(4) pandas的导入:pip install pandas
二、完整代码
# 获取新闻的标题,内容,时间和评论数import requestsfrom bs4 import BeautifulSoupfrom datetime import datetimeimport reimport jsonimport pandasdef 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,newsAuthordef 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 urldef 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')
三、运行结果
阅读全文
0 0
- python爬取新浪新闻存储到excel
- Python爬取新浪新闻
- 第四课 Python爬虫简单爬取新浪新闻列表
- 使用python网络爬虫爬取新浪新闻(一)
- python_爬取新浪新闻
- Python爬取百度新闻数据并将时间统计到EXCEL中
- python爬虫爬取ithome的新闻存储到本地数据库
- python3爬取新浪新闻内容
- Python爬虫学习(一)——爬取新浪新闻
- Python爬取新浪微博热搜榜
- python获取新浪新闻
- python3爬虫-爬取新浪新闻首页所有新闻标题
- Python爬虫爬取网站新闻
- python爬虫爬取Bloomberg新闻
- python爬虫之爬取腾讯新闻
- python 爬取网易新闻评论
- Python爬取网页信息并且存储到MySQL数据库
- python爬取新浪微博内容
- 【算法题】数组分段
- 折半查找(二分查找)
- 【思维-二进制思想】nyoj-备用 2350--彩排
- SSM框架整合
- springboot整合spring data jpa
- python爬取新浪新闻存储到excel
- android蓝牙编程牛刀小试
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- HDU 1002 A + B Problem II
- 【YOLO】YOLO网络中参数的解读
- 如何自定义sort函数中的比较函数
- python爬虫——多线程+协程(threading+gevent)
- Java NIO学习(二)SelectionKey详解
- LeetCode 387 First Unique Character in a String