【Python网络爬虫入门教程1】成为“Spider Man”的第一课:HTML、Request库、Beautiful Soup库

Python 网络爬虫入门:Spider man的第一课

  • 写在最前面
    • 背景知识介绍
    • 蛛丝发射器——Request库
    • 智能眼镜——Beautiful Soup库
  • 第一课总结

写在最前面

有位粉丝希望学习网络爬虫的实战技巧,想尝试搭建自己的爬虫环境,从网上抓取数据。

前面有写一篇博客分享,但是内容感觉太浅显了
【一个超简单的爬虫demo】探索新浪网:使用 Python 爬虫获取动态网页数据

本期邀请了擅长爬虫的朋友@PoloWitty,来撰写这篇博客。通过他的专业视角和实战经验,一步步引导我们入门,成为一名数据探索的“Spider Man”。

【Python网络爬虫入门教程1】成为“Spider Man”的第一课:HTML、Request库、Beautiful Soup库
【Python网络爬虫入门教程2】成为“Spider Man”的第二课:观察目标网站、代码编写
【Python网络爬虫入门教程3】成为“Spider Man”的第三课:从requests到scrapy、爬取目标网站


随着互联网数据的指数级增长,了解如何有效地提取这些信息变得越来越重要。无论是文本模型如ChatGPT,还是视觉模型如Stable Diffusion,它们的训练数据大多来源于互联网的海量数据。在这个日新月异的大数据时代,爬虫也算是其中不得不点的一项基础技能树了。

本系列文章将深入浅出地介绍Python网络爬虫的基础知识和技术,从 Requests 库到 Scrapy 框架的 入门级 使用,为你开启python网络爬虫的大门,成为spider man的一员,并最终以ScrapeMe网站作为目标示例,爬取下网站上的可爱又有趣的宝可梦照片。

在开始之前,还要啰嗦几句叠个甲,网络爬虫虽然强大,但在使用时必须遵守法律法规和网站的爬虫协议。不违法爬取数据,遵守相关法律法规哦~

请添加图片描述

这是本系列的第一篇文章,将会介绍在编写网络爬虫的过程中需要了解的互联网前端背景知识,以及两个简洁易用的相关库的使用。

通过本教程,你将学会如何开始使用Python进行网络爬虫,从而在这个数据驱动的时代中,更好地利用可用的网络资源。我们期待看到你成为一名数据探索的“Spider Man”!

欢迎在评论分享在爬虫中遇到的问题,让我们一起讨论和学习!

背景知识介绍

要成功编写一个Python爬虫,关键在于对目标网站进行精确的定制化设计。同时,面对常见的反爬虫机制,你还需要具备应对策略的准备。Python爬虫的技能树广泛而深入,即使是最基础的爬虫,也涉及到HTML、CSS和JavaScript等前端知识。在此,我们将简要介绍这些基础知识,为你的爬虫之旅打下坚实的基础。

HTML是网页构建的骨架,通过各种标记语言来定义页面内容。比如<img>标签用来标记图像,<a>标签用来标记链接,而文本可以用<p>(段落)或者<h1><h6>(标题)来标记,在爬取的过程中就需要根据这些来对内容进行筛选。CSS则是美化大师,最常用的就是给HTML中的元素加上类名(class)来定义样式。比如,你可以给所有标题元素指定相同的样式,这样就能保持一致风格。

接下来是JS,它让页面动起来!一个常见的用法是使用document.getElementBy这类方法获取页面上的元素。比如,document.getElementById('someId')可以获取带有特定ID的元素,而document.getElementsByClassName('someClass')可以获取所有拥有相同类名的元素。通过这些方法,你能轻松捕获页面上的各种东西,让爬虫更精准地抓取你需要的信息!

当然,这里提到的都只是在编写爬虫的过程中可能最经常会用到的相关知识,如果想要获取更多相关内容,可以在网上搜索相关系列课程进行学习(比如菜鸟教程),这里就不再深入展开了。

接下来咱们来看看在编写爬虫过程中我们会用到的第一个库:request库。

蛛丝发射器——Request库

现在,咱们来谈谈requests库。requests库就像是蜘蛛侠的蛛丝发射器!想象一下,蜘蛛侠用蛛丝发射器轻松地抓住高楼大厦上的东西,requests库也能轻松地抓取网页上的数据!

就像蜘蛛侠能迅速把蛛丝射向目标一样,requests.get()方法能迅速向网站发出请求,抓取你想要的信息。而且,就像蜘蛛侠可以根据需要调整蛛丝的力度和角度一样,你也可以用requests库的不同参数调整请求,让它更适合你的需求!

有时候,你得给服务器点提示,告诉它你是谁。那就用requestsheaders参数,就像是在门口留个便条一样。而且,如果你要往网站发送数据,比如登录信息或者表单内容,requests库也能搞定!

下面来举个例子实操一下:

import requests
import jsonurl = 'http://t.weather.sojson.com/api/weather/city/101010100'
response = requests.get(url) # 发送请求并得到返回结果obj = json.loads(response.text) # 加载获取的json格式数据
print(obj)  

通过上面的代码,就可以利用天气api获取到北京市的天气。然后这个api返回的内容其实是个json格式的对象,我们可以使用json.loads()方法将其加载为一个python对象。

好了,学习到这里,你其实就已经可以利用request库和一些api服务设计出一些很炫酷的东西了hhh,比方说利用天气的api再加上一些网页的前端知识,你也可以自己做一个天气预报程序了 ^o^/


但是,如果有小伙伴尝试把上面的url换成https://www.baidu.com,可能就会发现response.text获取到的东西有点怪异。别慌!这是因为网页的内容以一种和平常不一样的编码形式展现出来了。

幸运的是,这时就该请出BeautifulSoup登场了!就像spider man的智能眼镜一样,BeautifulSoup库能帮你将那些乱七八糟的字符瞬间变成你看得懂的语言,让你轻松读懂网页的内容!

智能眼镜——Beautiful Soup库

当直接使用request库去请求https://www.baidu.com时,返回的其实是网页的文本表示,大家一般会使用DOM(文档对象模型)来对它进行解释。当你在浏览器中打开一个网页时,浏览器会下载网页的HTML、CSS和JavaScript文件,然后解析这些文件,构建成一个DOM树。这个树形结构代表了网页的层级结构,比如标题、段落、链接等等元素以及它们的嵌套关系。

Beautiful Soup就是专为网页解析设计的,它对于DOM(文档对象模型)树的解析简直游刃有余。用Beautiful Soup,你可以像操作树一样操作这个DOM树,轻松找到你想要的内容。比如,你可以用find()find_all()方法按标签名或者类名查找元素,就像在树中找到特定类型的分支一样。

如果我们拿百度页面举例,假设你想找到其中所有的链接,现在就可以用类似这样的代码来进行实现:

import requests
from bs4 import BeautifulSoupurl = 'https://www.baidu.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')# 找到所有的链接
links = soup.find_all('a')# 输出所有链接的地址
for link in links:print(link.get('href'))

除了获取所有的链接,我们还可以利用bs4实现各种各样的功能,比方说,我们如果将上面的代码中的'a'替换成'img',将'href'替换成'src',我们便可以获取到百度页面中所有图片的链接,如果再利用request库对这些链接地址进行一下请求,我们就可以轻松的爬取下该页面下所有的图片了!

第一课总结

通过本系列教程的第一课,你应该已经了解到了使用python编写爬虫的一些基础知识,并且对于requests库和Beautiful Soup库有了一定的认识。利用本节课上学到的知识,你就已经可以编写一些简单的爬虫程序啦 ^ o^y

在下一课中,将会利用本堂课上学到的基础知识,使用requests库和Beautiful Soup库编写针对宝可梦图片的简单版爬虫程序。

欢迎持续关注本系列课程!

简单的爬虫程序啦 ^ o^y

在下一课中,将会利用本堂课上学到的基础知识,使用requests库和Beautiful Soup库编写针对宝可梦图片的简单版爬虫程序。

欢迎持续关注本系列课程!

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

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

相关文章

Unity优化——加速物理引擎1

大家好&#xff0c;这里是七七&#xff0c;今天开始更新物理引擎相关的优化部分了&#xff0c;本文介绍的是物理引擎内部工作情况。 Unity技术有两种不同的物理引擎&#xff1a;用于3D物理的Nvidia的PhysX和用于2D物理的开源项目Box2D。然而&#xff0c;Unity对它们的实现是高…

Unity中实现ShaderToy卡通火(一)

文章目录 前言一、准备好我们的后处理基础脚本1、C#&#xff1a;2、Shader&#xff1a; 二、开始逐语句对ShaderToy进行转化1、首先&#xff0c;找到我们的主函数 mainImage2、其余的方法全部都是在 mainImage 函数中调用的方法3、替换后的代码(已经没报错了&#xff0c;都是效…

如何在小米路由器4A千兆版刷入OpenWRT并通过内网穿透工具实现公网远程访问

文章目录 前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理界面4.4 创建公网地址 5. 固定公网地址访问 前言 OpenWRT是一个高度模块化、高度自…

使用Tomcat部署静态项目并处理BUG

--听讲的习惯 Tomcat介绍 tomcat what_Arenaschi的博客-CSDN博客 Tomcat安装及配置教程&#xff08;超详细&#xff09; 那些年我们用过的tomcat_Arenaschi的博客-CSDN博客 简单使用tomcat查看版本信息等_windows查看tomcat版本命令-CSDN博客 Tomcat部署html静态网站的五种方…

双向链表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

【论文极速读】LVM,视觉大模型的GPT时刻?

【论文极速读】LVM&#xff0c;视觉大模型的GPT时刻&#xff1f; FesianXu 20231210 at Baidu Search Team 前言 这一周&#xff0c;LVM在arxiv上刚挂出不久&#xff0c;就被众多自媒体宣传为『视觉大模型的GPT时刻』&#xff0c;笔者抱着强烈的好奇心&#xff0c;在繁忙工作之…

开源组件与中间件的学习笔记: C++, linux, git

文章目录 C入门基本内容 linux系统与基本命令总体认知基本内容 开发工具和git基本内容 感言一些感悟 C入门 基本内容 小非是刚入职的员工&#xff0c; 在熟悉完git和vscode之后就开始了写代码 &#xff0c;但是老张不放心&#xff0c;担心小飞写出屎山代码&#xff0c; 想要看…

财务机器人(RPA)会影响会计人员从业吗?

财务机器人会对会计从业人员有影响。 不过是正面积极的影响。 它是财务人员工作的好助手好帮手。 具体展开聊聊财务RPA机器人是如何成为财务人员的好帮手。 财务机器人是在人工智能和自动化技术的基础上建立的、以软件机器人作为虚拟劳动力、依据预先设定的程序与现有用户系…

代码随想录二刷 |二叉树 |94.二叉树的中序遍历

代码随想录二刷 &#xff5c;二叉树 &#xff5c;二叉树的中序遍历 题目描述解题思路代码实现迭代法递归法 题目描述 94.二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&a…

prompt工程

微信公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、prompt基础 提示包括传递给语言模型的指令和语境&#xff0c;以实现预期的任务。提示工程是开发和优化提示的实践&#xff0c;以便在各种应用…

Nacos 配置中心源码 | 京东物流技术团队

客户端 入口 在引入配置中心 maven 依赖的 jar 文件中找到 spring-cloud-starter-alibaba-nacos-config-2.2.5.RELEASE.jar!/META-INF/spring.factories&#xff0c;在该配置文件找到 NacosConfigBootstrapConfiguration 配置类&#xff0c;该类是 nacos 配置中心的入口类&am…

linux 14网站架构 编译安装mysql数据库

目录 LNMP网站架构下载源码包mysql 下载位置 mysql 安装1.1、清理安装环境&#xff1a;1.2、创建mysql用户1.3、从官网下载tar包1.4、安装编译工具1.5、解压1.6、编译安装编译安装三部曲1.7、初始化初始化,只需要初始化一次1.8、启动mysql1.9、登录mysql1.10、systemctl启动方式…