如何通过Python爬虫按关键词抓取相关的新闻
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍了如何通过Python爬虫按关键词抓取相关的新闻,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言首先,如果从新闻直接
千家信息网最后更新 2025年12月02日如何通过Python爬虫按关键词抓取相关的新闻
这篇文章主要介绍了如何通过Python爬虫按关键词抓取相关的新闻,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
前言
首先,如果从新闻直接进行搜索,你会发现其内容最多显示20页,因此我们要从新浪的首页进行搜索,这样才没有页数的限制。
网页结构分析
进入新浪网并进行关键字搜索之后,发现无论如何翻页网址都不会变,但是网页的内容却更新了,经验告诉我这是通过ajax完成的,因此我把新浪的网页代码拿下来看了看。
显而易见,每一次翻页都是通过点击a标签向一个地址发送请求,如果你直接将这个地址放入浏览器的地址栏并回车:
那么恭喜你,收到错误了
认真看一下html的onclick,发现它是调用了一个叫getNewsData的函数,因此在相关的js文件中查找一下这个函数,可以看出它是在每次ajax请求之前构造了请求的url,并且使用get请求,返回的数据格式为jsonp(跨域)。
因此我们只要模仿它的请求格式就可以获取数据了。
var loopnum = 0;function getNewsData(url){ var oldurl = url; if(!key){ $("#result").html("无搜索热词"); return false; } if(!url){ url = 'https://interface.sina.cn/homepage/search.d.json?q='+encodeURIComponent(key); } var stime = getStartDay(); var etime = getEndDay(); url +='&stime='+stime+'&etime='+etime+'&sort=rel&highlight=1&num=10&ie=utf-8'; //'&from=sina_index_hot_words&sort=time&highlight=1&num=10&ie=utf-8'; $.ajax({ type: 'GET', dataType: 'jsonp', cache : false, url:url, success: //回调函数太长了就不写了 })发送请求
import requestsheaders = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0",}params = { "t":"", "q":"旅游", "pf":"0", "ps":"0", "page":"1", "stime":"2019-03-30", "etime":"2020-03-31", "sort":"rel", "highlight":"1", "num":"10", "ie":"utf-8"}response = requests.get("https://interface.sina.cn/homepage/search.d.json?", params=params, headers=headers)print(response)这次使用的是requests库,构造相同的url,并发送请求。结果收到的结果是冷冰冰的403Forbidden:
因此重新回到网站看看到底哪里出现了问题
从开发者工具中找到返回的json文件,并查看请求头,发现它的请求头带有cookie,因此在构造headers时我们直接复制它的请求头即可。再次运行,response200!剩下的就简单了,只需要将返回的数据解析后写入Excel。
完整代码
import requestsimport jsonimport xlwtdef getData(page, news): headers = { "Host": "interface.sina.cn", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0", "Accept": "*/*", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate, br", "Connection": "keep-alive", "Referer": r"http://www.sina.com.cn/mid/search.shtml?range=all&c=news&q=%E6%97%85%E6%B8%B8&from=home&ie=utf-8", "Cookie": "ustat=__172.16.93.31_1580710312_0.68442000; genTime=1580710312; vt=99; Apache=9855012519393.69.1585552043971; SINAGLOBAL=9855012519393.69.1585552043971; ULV=1585552043972:1:1:1:9855012519393.69.1585552043971:; historyRecord={'href':'https://news.sina.cn/','refer':'https://sina.cn/'}; SMART=0; dfz_loc=gd-default", "TE": "Trailers" } params = { "t":"", "q":"旅游", "pf":"0", "ps":"0", "page":page, "stime":"2019-03-30", "etime":"2020-03-31", "sort":"rel", "highlight":"1", "num":"10", "ie":"utf-8" } response = requests.get("https://interface.sina.cn/homepage/search.d.json?", params=params, headers=headers) dic = json.loads(response.text) news += dic["result"]["list"] return newsdef writeData(news): workbook = xlwt.Workbook(encoding = 'utf-8') worksheet = workbook.add_sheet('MySheet') worksheet.write(0, 0, "标题") worksheet.write(0, 1, "时间") worksheet.write(0, 2, "媒体") worksheet.write(0, 3, "网址") for i in range(len(news)): print(news[i]) worksheet.write(i+1, 0, news[i]["origin_title"]) worksheet.write(i+1, 1, news[i]["datetime"]) worksheet.write(i+1, 2, news[i]["media"]) worksheet.write(i+1, 3, news[i]["url"]) workbook.save('data.xls')def main(): news = [] for i in range(1,501): news = getData(i, news) writeData(news)if __name__ == '__main__': main()感谢你能够认真阅读完这篇文章,希望小编分享的"如何通过Python爬虫按关键词抓取相关的新闻"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
篇文章 搜索 关键 新闻 函数 地址 数据 网页 新浪 关键词 爬虫 代码 内容 文件 格式 结果 网址 utf-8 旅游 相同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 outlook发送服务器 app小程序服务器的管理 pc打印服务器 删除不存在的数据库能否执行 服务器安全事件id说 服务器运行日志 文本数据库下载 赤子城网络技术有限公司高管 软件开发和网络工程哪个好学 数据库管理与技术课后答案 我的世界租赁服务器 北京数据库空投箱厂家现货 松江区定制软件开发诚信服务 股票期货现货软件开发 运维对服务器管理考核 数据库重排id序号 业务数据库记录什么信息 计算机网络技术实训情况总结 软件开发跳槽到国企 频繁修改数据库 戴尔服务器如何重启 我的订单退不款显示服务器繁忙 sql数据库复制 经济数据用的什么数据库 c 软件开发面试自我介绍 应用软件开发项目管理 网络技术转移市价 厦门软件开发 招标公告 查询的数据库语言 软件开发大一要带电脑吗
