Python数据分析实战-爬取以某个关键词搜索的最新的500条新闻的标题和链接(附源码和实现效果)

实现功能

通过百度引擎,爬取以“开源之夏”为搜索关键词最新的500条新闻的标题和链接

实现代码

1.安装所需的库:你需要安装requestsbeautifulsoup4库。可以使用以下命令通过pip安装:

pip install requests beautifulsoup4

2.发起搜索请求并获取多个搜索结果页面的HTML内容:由于一次搜索结果页面只包含一部分新闻,我们需要多次请求不同页码的搜索结果页面。可以使用以下代码实现:

import requestsdef search_baidu(keyword, page):url = f"https://www.baidu.com/s?wd={keyword}&pn={page}&rn=10"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"}response = requests.get(url, headers=headers)if response.status_code == 200:return response.textelse:return None

这个函数将返回搜索结果页面的HTML内容。

3.解析搜索结果并提取新闻标题和链接:使用beautifulsoup4库解析HTML内容,提取出搜索结果中的新闻标题和链接。可以使用以下代码实现:

from bs4 import BeautifulSoupdef parse_search_results(html):soup = BeautifulSoup(html, "html.parser")news_results = soup.find_all("h3", class_="t")news_list = []for result in news_results:title = result.a.textlink = result.a["href"]news_list.append({"title": title, "link": link})return news_list

这个函数将返回一个包含新闻标题和链接的列表。

4.完整的爬取过程:将上述步骤整合到一个函数中,实现完整的爬取过程。可以使用以下代码实现:

def crawl_latest_news(keyword, num_news):news_list = []num_pages = num_news // 10 + 1  # 每页10条新闻,计算需要请求的页面数for page in range(num_pages):html = search_baidu(keyword, page * 10)if html:page_news = parse_search_results(html)news_list.extend(page_news)else:print(f"无法获取第 {page+1} 页的搜索结果")return news_list[:num_news]

现在,你可以调用crawl_latest_news函数,并传入你想要搜索的关键词和要获取的新闻数量(这里是500),获取最新的500条新闻列表。例如:

keyword = "开源之夏"
num_news = 500
news_list = crawl_latest_news(keyword, num_news)
if news_list:for news in news_list:print(news["title"])print(news["link"])print()
else:print("无法获取搜索结果")

实现效果

写在后面

本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,对Python有一定认知和理解,会结合自身科研实践经历不定期分享关于python、机器学习、深度学习等基础知识与应用案例。

致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

1、邀请三个朋友关注本订阅号或2、分享/在看任意订阅号的三篇文章即可在后台联系我获取相关数据集和源码。

2、关注“数据杂坛”公众号,点击“领资料”即可免费领取资料书籍。

3、如果对本文有疑问,或者有论文指导的相关需求,点击“联系我”添加作者微信直接交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux启动redis时报错

2.WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128 意思大概是 tcp 连接数设置为 128 太小了 解决方案: ①修改配置文件 vim /etc/sysctl.conf (1)…

【AT模式连接ONENET】ONENET可视化平台的使用

02 ONENET可视化平台的使用 ATCWMODE1 设置模式 ATCWDHCP1,1 启动DHCP功能 ①ATCWJAP"ssid","password" ATCWJAP“123456789”,“wang020118” ②ATMQTTUSERCFG0,1,"设备名字","设备ID","你的鉴权信息""…

Hotspot启动原理(二)

关于Hotspot虚拟机的启动原理和过程。Hotspot虚拟机是Java虚拟机的一种实现,它在JVM领域中具有广泛的应用。在Hotspot虚拟机的启动过程中,会经历一系列的步骤,包括初始化、类加载、字节码解释执行、JIT编译、垃圾回收等环节。具体来说&#x…

hadoop、hive、DBeaver的环境搭建及使用

本文主要介绍hadoop、hive的结构及使用,具体的操作步骤见最后的附件; hadoop提供大数据的存储、资源调度、计算,分为三个模块:HDFS、YRAN、MapReduce HDFS提供数据的分布式存储,分为三个节点NameNode,DataNode,Second…

每日一题(LeetCode)----数组--螺旋矩阵(一)

每日一题(LeetCode)----数组–螺旋矩阵(一) 1.题目(54. 螺旋矩阵) 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1…

No appropriate protocol -- Mysql

DataGrip连接mysql报以下异常信息: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) The following required algorithms might be disabled: SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5wi…

VsCode连接远程Linux编译环境的便捷处理

1.免输登录密码 免输命令的正确方法是使用公钥和私鈅在研发设备,和linux服务器上校验身份。公钥和私钥可在windows系统上生成。公钥要发送到linux服务器。私钥需要通知给本地的ssh客户端程序,相关的操作如下: 生成 SSH Key: 打开…

oracle 手动收集统计信息(简单)

oracle 手动收集统计信息 1、手动收集Oracle schema下表列信息 begindbms_stats.gather_schema_stats(ownname > 用户名,method_opt > for all columns size repeat,degree > 8,options > GATHER AUTO,estimate_percent > …

安卓中轻量级数据存储方案分析探讨

轻量级数据存储功能通常用于保存应用的一些常用配置信息,并不适合需要存储大量数据和频繁改变数据的场景。应用的数据保存在文件中,这些文件可以持久化地存储在设备上。需要注意的是,应用访问的实例包含文件所有数据,这些数据会一…

2023年国赛试题------(四)Linux云服务配置 3.ansible 服务

3.ansible 服务 任务描述:请采用 ansible,实现自动化运维。 在

⑩⑦【MySQL】锁:全局锁、表级锁、行级锁

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ MySQL锁 ⑩⑦【MySQL】锁:全局锁、…

Ajax进阶

前后端传输数据的编码格式(contentType) # 提示: 主要研究post请求数据的编码格式.get请求数据就是直接放在url?号后面的每个参数之间用&符连接, 如下:url?usernamejason&password123 # 可以朝后端发送post请求的方式1 .form表单2. ajax请求# 基于post请求. 前后端传…

【MetaLearning】有关Pytorch的元学习库higher的基本用法

【MetaLearning】有关Pytorch的元学习库higher的基本用法 文章目录 【MetaLearning】有关Pytorch的元学习库higher的基本用法1. 基本介绍2. Toy ExampleReference 1. 基本介绍 higher.innerloop_ctx是higher库的上下文管理器,用于创建内部循环(inner lo…

2023亚太杯数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其…

Prometheus+Grafana环境搭建(window)

PrometheusGrafana环境搭建 1:配置Prometheus 1.1: 下载Prometheus安装包 官方下载地址 找到对应的win版本进行下载并解压 1.2 下载Window数据采集 官方下载地址 下载以管理员运行,安装成功后在服务里会出现一个"windows_exporter"采集…

光伏、储能双层优化配置接入配电网研究(附带Matlab代码)

由于能源的日益匮乏,电力需求的不断增长等,配电网中分布式能源渗透率不断提高,且逐渐向主动配电网方向发展。此外,需求响应(demand response,DR)的加入对配电网的规划运行也带来了新的因素。因此,如何综合考…

【LittleXi】CCPC2023 深圳站 总结

【LittleXi】CCPC2023 深圳站 总结 赛前 1、赛前vp了香港,rank13,还行 2、玩了一把div2,上了75分,感觉不如南京之前CF献祭的100分 3、比赛前一晚打了一把abc,只能说消耗了脑力,下次比赛前不玩了 热身赛…

小趴菜教你如何用Python开发手机App..

Python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用Python开发的app应当是作为编码练习、或者自娱自乐所用,加上目前这方面的模块还不是特别成熟,bug比较多,总而言之,劝君莫轻入。 准备工作 …

白银投资的升值空间及未来趋势

在投资多样化的今天,人们可选择的投资产品也越来越多。白银作为具有较高价值的贵金属,一直以来便是仅次于黄金的贵金属投资品种,今年来也受到更多投资者的关注。那么白银的升值空间及未来趋势如何?是否值得投资?这边将…

做医疗影像心脏方面的看过来:医学图像重建的心脏 MRI 数据集

本文发布了CMRxRecon数据集,包括来自 300 名受试者的多对比度、多视图、多切片和多通道 CMR 成像数据,还由经验丰富的放射科医生提供了所有受试者的心肌和心室的手动分割。单位:复旦, 香港理工大学, 厦大等 心脏磁共振成像(CMR&a…