如何通过Python爬虫按关键词抓取相关的新闻
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了如何通过Python爬虫按关键词抓取相关的新闻,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言首先,如果从新闻直接
千家信息网最后更新 2026年11月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安全错误 数据库的锁怎样保障安全 互联网科技公司 广州紫鲸互联网科技有限公司 金融科技 互联网金融 嘟嘟瓜互联网科技 百单互联网科技有限公司 赫美联合互联网科技 互联网科技的未来发展 一五八零互联网科技 四个字互联网科技公司取名 互联网科技公司的市场部门 语蝶互联网科技有限公司 天津腾达互联网科技有限公司 互联网公司黑科技创始人 东莞新华互联网科技学校 阿里互联网科技企业 上海互联网科技公司ppt 工业互联网科技创业 互联网科技平台产品运营 广西泛欧互联网科技有限公司 互联网科技自媒体灵感 致骋互联网科技 银优互联网科技有限公司 深圳艾佳互联网科技 互联网高科技股票 上海亿帐通互联网科技 江苏南京365互联网科技 互联网科技扶贫时间 长沙互联网科技 上海万顺科技互联网有限公司招聘 科技互联网企业在行动
