软件测试|使用Python抓取百度新闻的页面内容

简介

作为技术工程师,在繁忙的工作中我们不一定有时间浏览发生的热点新闻,但是懂技术的我们不需要访问网站来看当下发生的大事,我们可以使用网络爬虫的技术来获取当下最新最热的新闻,本文就来介绍一下使用Python抓取一下百度新闻的页面内容。

环境准备

我们会使用到的库都是常用的库,requestsbeautifulsoup是我们这次使用到的库,安装命令如下:

pip install requests beautifulsoup4

抓取页面内容

首先,我们使用requests库发送HTTP请求,并获取网页的内容。示例代码如下:

import requests

url = 'http://news.baidu.com/'
response = requests.get(url)
html = response.text
print(html)

以上代码中,我们使用了requests库发送了一个GET请求,并通过response.text属性获取了网页的HTML内容。

接下来,我们可以使用BeautifulSoup库将获取到的HTML内容进行解析,并提取所需的信息。示例代码如下:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
news_list = soup.find_all('a', class_='f-title')
for news in news_list:
    print(news.get('href'))
    print(news.get_text())

以上代码中,我们使用BeautifulSoup库解析了HTML内容,并通过find_all方法找到了所有class为"f-title"的a标签,然后通过get方法获取了链接和标题。

解析新闻内容

在上一步中,我们已经获取到了新闻的链接和标题。接下来,我们需要进一步解析新闻的内容。

首先,我们可以使用前面提到的requests库,发送新闻链接的HTTP请求,获取新闻详细内容的HTML。示例代码如下:

news_url = 'http://news.baidu.com/some_news_url'
news_response = requests.get(news_url)
news_html = news_response.text
print(news_html)

然后,我们可以使用BeautifulSoup库解析新闻的HTML内容,提取新闻的正文内容。示例代码如下:

news_soup = BeautifulSoup(news_html, 'html.parser')
news_content = news_soup.find('div', class_='news-content')
print(news_content.get_text())

以上代码中,我们假设新闻内容所在的标签的class属性为"news-content",通过find方法找到该标签,并通过get_text方法获取标签内的文本内容。

数据保存与处理

在前两步中,我们已经获取到了新闻的链接、标题和内容。接下来,我们可以将这些数据保存到本地文件或数据库中,或者进行进一步的数据处理。

一种常见的保存数据的方式是将数据写入到CSV文件中。示例代码如下:

import csv

data = [['链接', '标题', '内容'],
        ['http://news.baidu.com/some_news_url', '新闻标题1', '新闻内容1'],
        ['http://news.baidu.com/some_news_url', '新闻标题2', '新闻内容2'],
        ['http://news.baidu.com/some_news_url', '新闻标题3', '新闻内容3']]

with open('news.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerows(data)

以上代码中,我们首先定义了一个二维列表data,包含了新闻的链接、标题和内容。然后使用csv库将数据写入到名为news.csv的文件中。

注:在爬取网站数据时,请确保遵守相关的法律法规和网站的使用政策,以避免法律纠纷。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2、Redis持久化、主从与哨兵:构建强大而稳定的数据生态

Redis作为一款高性能的内存数据库,其在持久化、主从复制和哨兵系统方面的支持使其在大规模应用和高可用性场景中脱颖而出。本文将深入探讨Redis的持久化机制、主从复制以及哨兵系统,为构建强大而稳定的数据生态揭示关键技术。 持久化:数据的…

B端产品经理学习-版本规划管理

首先我们回顾一下用户故事,用户故事有如下特点: PRD文档的特点则如下: B端产品中用户角色不同,需求侧重也不同 决策人——公司战略需求:转型升级、降本增效、品牌提升等 管理负责人——公司管理需求:提升…

Kafka详解

KAFKA 1、消息队列(了解) 1-1 消息队列介绍 英文名:Message Queue,经常缩写为MQ。从字面上来理解,消息队列是用来存储传递消息的 1-2 消息队列应用场景 应用耦合-- 使用消息队列解耦 后端业务开发实名认证 图片上传功…

sectigo ip证书种类买一年送一月

Sectigo旗下的IP证书是专为只有公网IP地址的网站准备的。Sectigo旗下的数字证书大多是域名证书,例如,单域名SSL证书、多域名SSL证书、通配符SSL证书等。这些证书申请时必须验证域名所有权,申请者需要有一个拥有管理全的域名网站,那…

四、C语言中的数组:数组的创建与初始化

其实在之前的学习中我们已经或多或少接触到了数组,有关scanf()的安全用法中我们提到了如何避免数组溢出的问题,详情可以查看二、C语言数据类型与变量(scanf和printf (4)完) 这一章我们将详细学习数组在C语言中的应用 本章的学习…

MaxKey 单点登录认证系统——实现登录后自动跳转及分析思路

Maxkey单点登录系统集成业务系统应用之后,登录界面登录之后不会自动跳转业务系统,需要在首页点击相应应用之后,才能实现跳转业务系统,故以下本人提供解决方法和分析思路。 环境配置 本例使用的是CAS协议实现单点登录 Maxkey 服务…

优化 - 重构一次Mysql导致服务器的OOM

概述 优化了一次前后端处理不当导致的CPU的一次爆机行为,当然,这和服务器的配置低也有着密不可分的关系,简单的逻辑学告诉我们,要找到真正的问题,进行解决,CPU爆机的关键点在于前后端两个方面,…

POI-tl 知识整理:整理1 -> 利用模板向word中写入数据

1 文本传值 Testpublic void testText() throws Exception {XWPFTemplate template XWPFTemplate.compile("D:\\Idea-projects\\POI_word\\templates.docx");Map<String, Object> map new HashMap<>();map.put("title", "Hi, girl"…

如何在你的网站接入QQ登录?

文章目录 准备阶段申请QQ登录的权限创建应用最后上传qqlogin.php代码 准备阶段 国内服务器和备案域名需要你有张独一无二本人的身份证你正面手持身份证的图片一张100px*100px的网站图标 申请QQ登录的权限 首先访问qq互联&#xff0c;点击我直接访问 登陆完成后我们点击面的…

橘子学Spring01之spring的那些工厂和门面使用

一、Spring的工厂体系 我们先来说一下spring的工厂体系(也称之为容器)&#xff0c;得益于大佬们对于单一职责模式的坚决贯彻&#xff0c;在十几年以来spring的发展路上&#xff0c;扩展出来大量的工厂类&#xff0c;每一个工厂类都承担着自己的功能(其实就是有对应的方法实现)…

(三)CMake为什么几乎一统C++跨平台构建?

先看几个简单的例子再回头来看这个问题 回想一下当我们用windows写C第一个Hello World!的步骤&#xff0c;先用VS IDE 创建一个控制台的工程&#xff0c;IDE 会自动生成一个 cpp 文件&#xff0c;里面有一句 输出"Hello World!" 代码&#xff0c;这个时候按下F5 就可…

PTA 1117 数字之王 C++实现 简易代码

给定两个正整数 N1​<N2​。把从 N1​ 到 N2​ 的每个数的各位数的立方相乘&#xff0c;再将结果的各位数求和&#xff0c;得到一批新的数字&#xff0c;再对这批新的数字重复上述操作&#xff0c;直到所有数字都是 1 位数为止。这时哪个数字最多&#xff0c;哪个就是“数字…

在线直线度测量仪确保了出厂圆棒无不合格品

在线直线度测量仪确保了出厂圆棒无不合格品 随着生产设备的改进&#xff0c;利用基础材料进行生产的厂家对品质要求也越来越高&#xff0c;其中圆形棒管材的直线度尺寸&#xff0c;也是广受关注&#xff0c;对其进行矫直检测&#xff0c;使其出厂无不合格品。 变抽检为全检 以前…

逼格满满,推荐一个高效测试用例工具:XMind2TestCase !

一、背景 软件测试的核心是什么&#xff1f;毫无疑问是测试分析和测试用例设计&#xff0c;也是日常测试投入最多时间的工作内容之一。 然而&#xff0c;传统的测试用例设计过程有很多痛点&#xff1a; 1、使用Excel表格进行测试用例设计&#xff0c;虽然成本低&#xff0c;但…

Java 并发性和多线程3

七、线程安全及不可变性 当多个线程同时访问同一个资源&#xff0c;并且其中的一个或者多个线程对这个资源进行了写操作&#xff0c;才会产生竞态条件。多个线程同时读同一个资源不会产生竞态条件。 我们可以通过创建不可变的共享对象来保证对象在线程间共享时不会被修改&…

Github 2FA验证的解决方法

当前使用GitHub需要启用 2FA 验证&#xff0c;也就是除了账号密码外还有一个实时码&#xff0c;需要额外输入这个正确的实时码才能开启 2FA 验证和后续登陆。 浏览器插件 这是目前我在使用的方法。在浏览器中添加一个叫做Authenticator的插件&#xff0c;传送地址&#xff1a;…

MySQL 和 Redis 如何保证数据一致性,通过MySQL的binlog实现

1、简介 MySQL 和 Redis 如何保证数据一致性&#xff0c;目前大多讨论的是先更新Redis后更新MySQL&#xff0c;还是先更新MySQL 后更新Redis&#xff0c;这两种方式在实际的应用场景中都不能确保数据的完全一致性&#xff0c;在某些情况下会出现问题&#xff0c;本文介绍使用 C…

京东宣布启动鸿蒙原生应用开发,全力支持鸿蒙生态 | 百能云芯

华为常务董事、终端BG CEO、智能汽车解决方案BU董事长余承东于1月10日在微博上发布了一条令人振奋的消息&#xff1a;京东即将启动鸿蒙原生应用的开发。这一消息在科技圈掀起了不小的波澜&#xff0c;也为鸿蒙系统的发展注入了新的动力。 京东集团首席执行官兼执行董事许冉和余…

RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)

0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解及成果&#xff0c;但是内容可能存在不准确的地方。如果发现文中错误&#xff0c;希望批评指正&#xff0c;共同进步。 本文基于论文Faster R-CNN: Towards…

大一统的监控探针采集器 cprobe

需求背景 监控数据采集领域&#xff0c;比如 Prometheus 生态有非常多的 Exporter&#xff0c;虽然生态繁荣&#xff0c;但是无法达到开箱即用的大一统体验&#xff0c;Exporter 体系的核心问题有&#xff1a; 良莠不齐&#xff1a;有的 Exporter 写的非常棒&#xff0c;有的…