当前位置: 首页 > news >正文

挑战30天学完Python:Day22 爬虫

🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点知识,但又没有系统学习的使用者。总之如果你想提升自己的Python技能,欢迎加入《挑战30天学完Python》

  • 📘 Day 22
    • Python爬虫
    • 💻 第22天练习

📘 Day 22

Python爬虫

什么是数据抓取

互联网上充满了大量的数据,可以应用于不同的目的。为了收集这些数据,我们需要知道如何从一个网站抓取这些数据。

网络抓取本质上是从网站中提取和收集数据,并将其存储在本地机器或数据库中的过程。

在本节中,我们将使用 beautifulsoup 和 requests 包来抓取数据。

友情提醒:数据抓取不合法,本篇内容请仅用于测试和学习用。

如果你的Python环境中还没如下两个库,请用pip进行安装。

pip install requests
pip install beautifulsoup4

要从网站抓取数据,需要对HTML标记和CSS选择器有基本的了解。我们使用HTML标签,类或id定位来自网站的内容。

首先导入 requests 和 BeautifulSoup 模块

import requests
from bs4 import BeautifulSoup

接着将需要抓取的网页地址赋值给一个url变量,以下我们以手机新浪首页为例子。


import requests
from bs4 import BeautifulSoup
url = 'http://wap.sina.cn/'# 让我们使用网络请求url,获取返回的数据
response = requests.get(url)
# 检查返回状态,200表示正常
status = response.status_code
print(status)
200

使用 beautifulSoup 解析页面内容。

import requests
import re
from bs4 import BeautifulSoup
url = 'http://wap.sina.cn/'response = requests.get(url)
# 获取请求页面的所有内容
content = response.content
# 加载成beautiful对象
soup = BeautifulSoup(content, 'html.parser')
#解析标题并打印
print(soup.title)
# 获取标题里内容
print("《" + soup.title.get_text() + "》")
# 网站整个页面
# print(soup.body)
# 寻找要闻片段(通过网页右键查看源代码)
yaowen = soup.find(id="yaowen_defense")
# 要闻对象中查找所有<H2>标签,并循环获取概要标题
for h2 in yaowen.find_all('h2'):print(h2.contents[0])

如果运行这段代码,可以看到提取到了所有的新闻标题。

本节只是抛砖隐喻,并不是python基础学习中核心部分。不过多展开,更多参考官方文档 beautifulsoup documentation

🌕 你如此有能力,每一天都在进步,挑战还剩余8天,加油!本篇内容虽少,但练习不能少。

💻 第22天练习

  1. 抓取豆瓣电影排行版中电影前10个电影的基本信息 https://movie.douban.com/chart。
  2. 从Python网络爬虫靶场 http://www.spiderbuf.cn/ 选择任意一个无反扒的网站进行表数据获取。

练习参考:22_exercise.py

🎉 CONGRATULATIONS ! 🎉

<< Day 21 | Day 23 >>

相关文章:

挑战30天学完Python:Day22 爬虫

&#x1f389; 本系列为Python基础学习&#xff0c;原稿来源于 30-Days-Of-Python 英文项目&#xff0c;大奇主要是对其本地化翻译、逐条验证和补充&#xff0c;想通过30天完成正儿八经的系统化实践。此系列适合零基础同学&#xff0c;或仅了解Python一点知识&#xff0c;但又没…...

AI:138-开发一种能够自动化生成艺术品描述的人工智能系统

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…...

智慧城市建设的新里程碑:公共服务电子支付大屏

随着科技的飞速发展&#xff0c;我们的生活正在经历前所未有的变革。电子支付的出现&#xff0c;无疑是这场变革中的一大亮点&#xff0c;它不仅改变了我们日常的支付方式&#xff0c;更成为智慧城市建设的重要一环&#xff0c;为公众提供了更加便捷、高效的服务体验。 在以前&…...

Netty之Decoder详解与实战

在这篇博客文章中&#xff0c;我们将深入探讨Netty框架中的一个核心组件——Decoder&#xff0c;并通过示例解释其工作原理及如何在Netty应用程序中使用它来处理网络通信中的数据解码。 1. 什么是Decoder&#xff1f; 在Netty中&#xff0c;Decoder是一种特殊类型的ChannelHa…...

PCIe P2P DMA全景解读

温馨提醒&#xff1a;本文主要分为5个部分&#xff0c;总计4842字&#xff0c;需要时间较长&#xff0c;建议先收藏&#xff01; P2P DMA简介 P2P DMA软硬件支持 CXL P2P DMA原理差异 P2P DMA应用场景 P2P DMA技术挑战 一、P2P DMA简介 P2P DMA&#xff08;Peer-to-Peer…...

【Git】window下大小写不敏感问题处理

在Windows环境下&#xff0c;Git因为文件名的大小写敏感性而导致了一些问题。 首先&#xff0c;Windows文件系统是不区分大小写的&#xff0c;这意味着在Windows中创建的两个文件名只有大小写不同&#xff0c;但字母顺序和字符完全相同的文件会被视为相同的文件。然而&#xf…...

【JS】【Vue3】【React】获取滚轮位置的方法:JavaScript、Vue 3和React示例

目录 使用JavaScript原生方法在Vue 3中获取滚轮位置在React中获取滚轮位置 随着Web应用程序的发展&#xff0c;滚轮位置的获取变得越来越重要&#xff0c;可以用于实现页面的滚动效果、导航条的隐藏和显示等功能。本文将探讨在JavaScript、Vue 3和React中获取滚轮位置的不同方法…...

什么是线程和进程?

什么是线程和进程? 文章目录 什么是线程和进程?何为进程?何为线程? Java 线程和操作系统的线程有啥区别&#xff1f;请简要描述线程与进程的关系,区别及优缺点&#xff1f;图解进程和线程的关系程序计数器为什么是私有的?虚拟机栈和本地方法栈为什么是私有的?一句话简单了…...

MaxScale实现mysql8读写分离

MaxScale 实验环境 中间件192.168.150.24MaxScale 22.08.4主服务器192.168.150.21mysql 8.0.30从服务器192.168.150.22mysql 8.0.30从服务器192.168.150.23mysql 8.0.30 读写分离基于主从同步 1.先实现数据库主从同步 基于gtid的主从同步配置 主库配置 # tail -3 /etc/my.…...

【c语言】内存函数

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 memcpy函数的使用和模拟实现 memcpy函数的使用 memcpy函数的模拟实现 memmove的使用和模拟实现 memmove的使用 memmove的模拟实现 memset函数的使用 memcmp函数…...

规则引擎项目

https://github.com/expr-lang/expr https://github.com/gorules/zen...

Docker Image(镜像)

“脚印会旧而梦还在走” Docker 镜像介绍 (1) 如何理解镜像&#xff1f; &#x1f3af; docker image本质就是一个 read-only(只读)文件&#xff0c;这个文件包含了文件系统、源码、库文件、依赖文件、工具等一些运行 application 所必须的文件。 &#x1f3af; 我们也可以…...

qgis启动提示Could not load qgis_app.dll

qgis启动提示Could not load qgis_app.dll 报错信息 我安装了QGIS3.16和3.22和3.28&#xff0c;都无法运行&#xff0c;启动程序报错问题如下图所示 解决方法 在开始菜单运行OSGeo4W 然后进去看看已经下载的qgis有没有更新&#xff0c;如果有更新的话&#xff0c;就直接点…...

数据分析---Python与sql

目录 Python的pandas,如何实现SQL中的leftjoinPython的pandas,如何实现SQL中的unionPython的pandas,如何实现类似SQL中的where进行限制Python的pandas,如和实现SQL中的group byPython的pandas,如何删除某一列Python的pandas,如何实现SQL中的leftjoin 在Python的pandas库中…...

【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理

前言 嘿&#xff0c;数据库大冒险家们&#xff01;准备好迎接数据库管理的新挑战了吗&#xff1f;今天我们要探索的是Oracle数据库中的模式对象管理与安全管理&#xff01;&#x1f6e1;️&#x1f4bb; 在这篇博文【Oracle】玩转Oracle数据库&#xff08;六&#xff09;&#…...

微服务篇之限流

一、为什么要限流 1. 并发的确大&#xff08;突发流量&#xff09;。 2. 防止用户恶意刷接口。 二、限流的实现方式 1. Tomcat限流 可以设置最大连接数&#xff0c;但是每一个微服务都有一个tomcat&#xff0c;实现起来非常麻烦。 2. Nginx限流 &#xff08;1&#xff09;控…...

react脚手架

1.react概述 1.1 什么是react React是一个用于构建用户界面的JS库。 用户界面&#xff1a;HTML页面&#xff08;前端&#xff09; React主要用来写HTML界面&#xff0c;或构建Web应用 如果从MVC的角度来看&#xff0c;React仅仅是视图层&#xff08;V&#xff09;,也就是只负…...

【Vue3】插槽使用和animate使用

插槽使用 插槽slot匿名插槽具名插槽插槽作用域简写 动态插槽transition动画组件自定义过渡class类名如何使用animate动画库组件动画生命周期appear transition- group过渡列表 插槽slot 插槽就是子组件中提供给父组件使用的一个占位符父组件可以在这个占位符智能填充任何模板代…...

HarmonyOS—低代码开发Demo示例

接下来为大家展示一个低代码开发的JS工程的Demo示例&#xff0c;使用低代码开发如下华为手机介绍列表的HarmonyOS应用/服务示例。 1.删除模板页面中的控件后&#xff0c;选中组件栏中的List组件&#xff0c;将其拖至中央画布区域&#xff0c;松开鼠标&#xff0c;实现一个List组…...

Spring体系下解决请求统一加解密之ResponseBodyAdvice和RequestBodyAdvice

在日常写项目中经常一般正规的项目都需要将信息加密后返回前端&#xff0c;前端进行解密后再展示出来给用户&#xff0c;这样做的目的无一不是为了安全&#xff0c;在Java开发中&#xff0c;如何简单快速的完成这个功能呢&#xff0c;这里就需要用到这两个接口ResponseBodyAdvi…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...