pyhton爬虫实战-爬取新浪国内新闻

news/2024/12/22 15:20:58/

第一次实战爬虫,爬取了新浪国内的最新的首页新闻,附效果截图:

附代码:

import requests
from bs4 import BeautifulSoup
import json
import re
from datetime import datetime
import pandas
import sqlite3
import osurl = 'https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&\
versionNumber=1.2.4&page={}&encode=utf-8&callback=feedCardJsonpCallback&_=1568108608385'commentUrl = 'https://comment.sina.com.cn/page/info?version=1&format=json\
&channel=gn&newsid=comos-{}&group=undefined&compress=0&ie=utf-8&oe=utf-8\
&page=1&page_size=3&t_size=3&h_size=3&thread=1&uid=3537461634'
#爬取网页内详细信息
def getNewsDetail(newsurl):result = {}res = requests.get(newsurl)res.encoding = 'utf=8'soup = BeautifulSoup(res.text,'html.parser')result['title'] = soup.select('.main-title')[0].texttimesource = soup.select('.date-source')[0].select('.date')[0].text#dt = datetime.strptime(timesource,'%Y年%m月%d日 %H:%M')result['time'] = timesourceresult['url'] = newsurlresult['origin'] = soup.select('.date-source a')[0].textresult['article'] = '  '.join([p.text.strip() for p in soup.select('#article p')[:-1]])result['author'] = soup.select('.show_author')[0].text.lstrip('责任编辑:')result['comments'] = getCommentCounts(newsurl)return result
#爬取评论数量
def getCommentCounts(newsulr):m = re.search('doc-i(.+).shtml',newsulr)newsId = m.group(1)commentURL = commentUrl.format(newsId)comments = requests.get(commentURL)jd = json.loads(comments.text)return jd['result']['count']['total']#获取每个分页的所有新闻的URL,然后取得详细信息
def parseListLinks(url):newsdetails = []res = requests.get(url)res = res.text.split("try{feedCardJsonpCallback(")[1].split(");}catch(e){};")[0]jd = json.loads(res)for ent in jd['result']['data']:newsdetails.append(getNewsDetail(ent['url']))return newsdetailsnews_total = []
#取得指定分页的新闻信息
for i in range(1,2):#取第一页的新闻信息newsurl = url.format(i)newsary = parseListLinks(newsurl)news_total.extend(newsary)df = pandas.DataFrame(news_total)
#指定生成的列顺序
cols=['title','author','time','origin','article','comments','url']
df=df.loc[:,cols] #df.head(10)
#存储到sqlite数据库中
with sqlite3.connect('news.sqlite') as db:df.to_sql('newsDetail', con=db)   
#读取数据库中的信息
with sqlite3.connect('news.sqlite') as db1:df2 = pandas.read_sql_query('SELECT * FROM newsDetail', con=db1)
#保存新闻信息到excle表格中
df2.to_excel('newsDetail.xlsx')
df2

 


http://www.ppmy.cn/news/973769.html

相关文章

Python爬虫实战 | 人民网爬虫 根据关键词筛选新闻文章

上一篇《人民日报》的爬虫文章发布之后,收到了很不错的反馈,文中的爬虫代码也确实帮助到了很多人,我很开心。 跟读者们交流过程中,我也发现了一些比较共性的需求,就是 根据关键词筛选 新闻文章。 最初我的想法是&…

python实战之网络爬虫(爬取网页新闻资讯列表)

关于大数据时代的数据挖掘 (1)为什么要进行数据挖掘:有价值的数据并不在本地存储,而是分布在广大的网路世界,我们需要将网络世界中的有价值数据挖掘出来供自己使用 (2)非结构化数据&#xff1…

Python爬虫——爬取某网站新闻

文章目录 前言一、基本目标二、使用步骤整体代码 结果总结 前言 🙉随机找了个网站爬爬,我们的目标是 1.利用爬虫的re、xpath等知识,爬取到这个官网上的新闻,内容有:新闻标题, 发布时间, 新闻链接, 阅读次数, 新闻来源…

Python - 通过requests实现腾讯新闻抓取爬虫

最近也是学习了一些爬虫方面的知识。以我自己的理解,通常我们用浏览器查看网页时,是通过浏览器向服务器发送请求,然后服务器响应以后返回一些代码数据,再经过浏览器解析后呈现出来。而爬虫则是通过程序向服务器发送请求&#xff0…

Python爬虫爬取新浪新闻内容

首先感谢丘祐玮老师在网易云课堂的Python网络爬虫实战课程,接下来也都是根据课程内容而写.一来算是自己的学习笔记,二来分享给大家参考之用。 课程视频大概是在16年11月录制的,现在是18年2月.其中有几处因网站更新升级产生的不同,小小修改后仍是爬虫学习…

SQL RIGHT JOIN 关键字

在 SQL 中,RIGHT JOIN 是一种用于将两个或多个表中的记录组合在一起的 JOIN 操作类型。RIGHT JOIN 操作将返回右侧表中所有的行,并通过连接条件从左侧表中匹配相应的行。如果左侧表中没有匹配的行,则会在结果集中填充 NULL 值。因此&#xff…

程序员面试系列,MySQL常见面试题?

原文链接 一、索引相关的面试题 (1)索引失效的情况有哪些 在MySQL查询时,以下情况可能会导致索引失效,无法使用索引进行高效的查询: 数据类型不匹配:如果查询条件中的数据类型与索引列的数据类型不匹配&…

微服务——Nacos配置管理

目录 Nacos配置管理——实现配置管理 配置管理实践 Nacos配置管理——微服务配置拉取 Nacos配置管理——配置热更新 方式一: ​编辑 方式二(推荐方式): Nacos配置管理——多环境配置共享 优先级问题 Nacos配置管理——nacos集群搭建 总结​编辑 Nacos配置管理——实现配置管…