python爬虫学习简记(更新中)

news2024/12/23 0:36:58

页面结构的简单认识

如图是我们在pycharm中创建一个HEML文件后所看到的内容

这里我们需要认识的是上图的代码结构,即html标签包含了head标签与body标签


table标签

 table标签代表了一个网页页面中的表格,其包含了行和列,其中行标签我们使用tr标签,在行中我们可以定义列,列我们使用的是td标签

如图我们在body标签中 编写了上图代码,即定义了一个一行三列的表格

在浏览器中运行可以看到

如果想要表格的结构更明确,我们可以这样

 为表格添加一些属性,运行结果如下 


ul标签 

ul标签代表的是网页中的无序列表,我们可以往列表中添加我们想要的元素,这些元素我们使用li标签进行定义


ol标签

ol标签代表的是网页中的有序列表,其中的元素也是使用li标签定义


a标签 

a标签代表的是网页中的超链接,即点击后可以进行页面的跳转,我们使用href属性指定想要的跳转到的域名

点击即跳转到百度

爬虫概念理解 

我们一般有以下两种理解

  • 通过一个程序,根据url进行爬取网页,获取有用信息
  • 使用程序模拟浏览器,去向服务器发送请求,获取相应信息

爬虫核心

  1. 爬取网页:爬取整个网页,包含了网页中所有的内容
  2. 解析数据:将你得到的数据进行解析
  3. 难点:爬虫与反爬虫之间的博弈

urllib库使用

urllib是python自带的库,我们可以直接使用,无需下载,下面演示使用urllib爬取baidu首页源码

先导入该库

 

再使用urlopen()函数去向参数url发出请求,返回值为服务器的响应对象 ,其中包含了关于该网页的内容,也包括源码,我们使用read()方法即可得到源码,但是注意得到的是二进制形式的数据,因此我们需要将其解码,这里使用编码为utf8的decode()方法进行解码

再打印出解码后的数据即可         


一个类型与六个方法

  • 一个类型即我们上面样例中urlopen()的返回值为HTTPResponse类型

六个方法如下:


将爬取到的网页、图片、视频下载到本地 

这里主要使用的函数是urlretrieve(参数1,参数2)

其中参数1是需要下载的对象地址,参数2是想要下载到的本地位置,上图中我没有指定位置,因此直接下载到的该python文件的目录下 


反爬手段User-Agent

User Agent中文名为用户代理,简称 UA。

它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等等。

也就是说,假设:一个平台,设置了UA权限,必须以浏览器进行访问

当你使用爬虫脚本去访问该网站的时候,就会出现,访问失败、没有权限、或者没有任何资源返回的结果等错误信息。

那么我们应该如何克服它呢??

我们需要在爬虫时添加一个User-Agent请求头即可

具体怎么做呢?

如上图所示,我们在爬取协议为https的百度首页时发现得到的源码很少,就是遇到了反爬手段UA

下面是对url知识的补充

 https协议比http协议更为安全

 

好了继续解决UA

如上,我们在最下面可以看到网页的UA

我们将其复制下来,在代码中存储为一个字典,然后使用Request得到一个带有UA的请求头的url,然后按照前面所学即可爬取内容啦

需要强调的是,这里因为Request()方法的参数第二个参数并非headers因此我们需要使用关键字传参

 

 

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

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

相关文章

1.场景设计题

系统设计 文章目录 系统设计一、缓存设计1、Redis 缓存Key回收策略?1.1、Redis缓存Key过期策略1.2、Redis缓存Key回收策略 2、Redis缓存击穿如何解决?2.1、导致Redis缓存穿透原因有那些? 3、Redis缓存雪崩如何解决?4、Redis缓存击…

笛卡尔心形线

目录 一、前言 二、使用 EasyX 绘制笛卡尔心形线 一、前言 "谁能告诉我,这是什么?" "爱心呗" "哼,爱心,我们叫它心形线。关于心形线呢,还有一个美丽的故事,是跟笛卡尔有关。…

RabbitMQ六种工作模式01

01: Work Queue工作队列模式 //接口所有的属性都是静态常量属性 public interface RabbitContent {//队列String QEUEU_HELLO "hello";String QUEUE_WORKING "working";String QUEUE_BAIDU "baidu";String QUEUE_SINA "sina";//交换机…

【操作系统笔记】南京大学jyy老师

系列综述: 💞目的:本系列是个人整理为了操作系统学习,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于南京大学操作系统jyy老师课程进行的,每个知识点的修正…

Windows系统内核溢出漏洞提权

目录 Windows内核溢出漏洞原理 溢出漏洞简介 什么是缓冲区 缓冲区溢出 缓冲区溢出目的 Windows内核溢出漏洞利用流程 提权实战思路 手工提权测试 辅助提权 EXP如何寻找 使用MSF提权 关于提权时可能遇到的问题 如果提权的时候发现无法执行命令的话,可以上…

零售EDI:如何与Transgourmet 建立EDI连接?

Transgourmet是一家总部位于法国的批发和供应商公司,为酒店、餐馆和快餐行业提供食品和非食品产品。在欧洲拥有广泛的市场覆盖,经营范围涵盖法国、德国、奥地利、波兰、罗马尼亚和瑞士等国家。 Transgourmet EDI 需求分析 1.传输协议 Transgourmet选择…

一文看懂企业性能测试,指标解析+代码演示,简洁易懂!

目录 前言: 一、性能测试流程简介 二、性能测试指标分析 三、性能测试代码演示 四、性能测试结论 五、总结 前言: 性能测试在企业应用中是非常重要的一环,它可以帮助企业对自身的应用和系统进行全面评估,提高其性能、稳定性…

simbertmilvus实现相似句检索

朋友们,simbert模型是一个较好的相似句检索模型,但是在大规模检索中,需要实现快速检索,这个时候离不开milvus等向量检索库,下面用实际代码来讲一下simbert之milvus应用。 import numpy as np from bert4keras.backen…

addr2line 使用,定位kernel panic 代码位置

在kernel崩溃时,方便定位代码。 需要打开kernel配置CONFIG_DEBUG_INFO。 需要有System.map和vmlinux文件,一般在out目录。 一般panic的时候会有给出panic的指针,如下down_write。 el1_data说明发生异常了,进入和entry.S文件&a…

视频转换、视频压缩、录屏等工具合集:迅捷视频工具箱

这是一款功能强大的视频处理软件,提供了多种视频处理功能。可以使用该软件进行视频剪辑、视频转换、音频转换、视频录像、视频压缩、字幕贴图等多种操作。软件界面简洁易用,操作方便,可以满足各种视频处理需求。 基本功能 视频压缩&#xff…

华为设备这14个广域网命令,值得网工收藏

华为设备广域网命令是网络管理员在运维过程中常用的一类命令。该命令集涵盖了DCC配置命令、PPP配置命令、MP配置命令、PPPoE命令、ATM配置命令、帧中继配置命令、HDLC配置命令、LAPB配置命令、X.25配置命令、IP-Trunk配置命令、ISDN配置命令、Modem配置命令、RTC终端接入配置命…

商场楼层索引图怎么做?商场内部地图导航怎么做?

商场内部地图导航怎么做?最近,某论坛上有一个帖子,主题是谈谈“逛商场中最糗的事情”,网友们纷纷跟帖回应,讲述自己在商场里遇到的尴尬,从在停车场找车如何困难,还有在商场里“迷路”的经历………

解决Ubuntu系统/usr/lib/xorg/Xorg占用显卡内存问题

问题描述: 服务器新安装的Ubuntu系统,开机默认/usr/lib/xorg/Xorg线程会占用显卡内存,占用内存大小为4Mb,虽然占用量不大,但是对于强迫症患者来说实在太不友好! 解决方法:将xorg的线程移动到集…

为什么我们需要API接口?API接口的核心又是什么?

API(Application Programming Interface)是一种连接不同软件之间的标准化的接口,可以让不同软件间进行数据交互和通信。API接口的作用很多,以下是几个主要的原因: 1.提高软件系统的灵活性和可扩展性。API接口可以将不…

大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)

知识目录 一、写在前面🎈二、集群准备🍟2.1 集群规划2.2 集群解释 三、说明🔑3.1 主机名说明3.2 用户名说明3.3 操作目录说明3.3 必要工具说明 四、上传资料🌵4.1 资料准备4.2 脚本准备4.3 配置文件准备 五、解压与修改文件&#…

华为OD机试真题 Java 实现【递增字符串】【2023Q1 200分】,附详细解题思路

一、题目描述 定义字符串完全由“A’和B"组成,当然也可以全是"A"或全是"B。如果字符串从前往后都是以字典序排列的,那么我们称之为严格递增字符串。 给出一个字符串5,允许修改字符串中的任意字符,即可以将任…

色彩空间转换 HSV,GRAY

RGB色彩空间是一种比较常见的色彩空间,除此之外比较常见的色彩空间还包括GRAY色彩空间(灰度图像)、YCrCb色彩空间、HSV色彩空间、HLS色彩空间、CIEL*a*b*色彩空间、CIEL*u*v&#xf…

租售keysight E8257D 50G模拟信号发生器 销售/回收

是德(Keysight) E8257D 模拟信号发生器 Keysight E8257D (Agilent) PSG 模拟信号发生器提供业界领先的输出功率、电平精度和高达 67 GHz 的相位噪声性能(工作频率可达 70 GHz)。Agilent PSG 模拟信号发生器的高输出功率和卓越的电…

SpringBoot + MyBatis报错:Invalid bound statement (not found)解决

背景:XML配置文件规范 使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。 在Mybatis中使用XML映射文件方式开发&#xff0c…

从速度、质量到成本,Grid分布式并行测试在web自动化测试中尽显优势。

目录 前言: 一、Grid分布式并行测试简介 二、Grid分布式并行测试的优势 三、Grid分布式并行测试架构 四、Grid分布式并行测试封装 五、结语 前言: WEB自动化测试已经成为了软件开发流程中不可或缺的一部分。测试人员通过编写脚本,模拟用…