爬虫概念、基本使用及一个类型和六个方法(一)

目录

一、爬虫简介

1.什么是爬虫

2.爬虫的核心

3.爬虫的用途

4.爬虫的分类

5.反爬手段

二、Urllib基本使用

1.导入我们需要的包

2.定义一个url

 3.模拟浏览器向服务器发送请求

4.获取响应中的页面的源码

5.打印数据

三、一个类型和六个方法

1.定义url,并向服务器发送请求

2.一个类型

3.六个方法

参考


一、爬虫简介

1.什么是爬虫

如果我们把互联网比作一个巨大的网,那一台计算机上的数据就是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据。

解释1:通过一个程序进行爬取网页,获取有用信息

解释2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息。

2.爬虫的核心

爬取网页:爬取整个网页,包含了网页中所有的内容

解析数据:将网页中你得到的数据进行解析

难点:爬虫与反爬虫之间的博弈

3.爬虫的用途

数据分析/人工数据集

社交软件冷启动

舆情监控

竞争对手监控

4.爬虫的分类

通用爬虫

       实例:百度、360、Google等搜索引擎

       功能:访问网页,抓取数据,数据存储,数据处理,提供检索服务

       Robots协议:一个约定俗称的协议,添加robots.txt文件,来说明本网站哪些内容不可以被抓取,起不到限制作用,自己写的爬虫无需遵守。

       网站排名:

              以前:根据pagerank算法值进行排名(参考网站流量,点击率等指标)

              现在:百度竞价排名

       缺点:抓取的数据大多是无用的;不能根据用户的需求精准的获取数据。

聚焦爬虫:

       功能:根据需求,实现爬虫程序,抓取需要的数据

       设计思路:确定要爬取的url;模拟浏览器通过http协议访问url,获取服务器返回的html代码;解析html字符串(根据一定的规则提取数据)

5.反爬手段

1.user_agent:中文名Wie用户代理,简称UA,他是一个特殊字符串头,是的服务器能够市北客户使用的操作系统及版本,CPU类型,浏览器及版本,浏览器渲染引擎,浏览器语言,浏览器插件等。

2.代理IP:(超出人类访问限制就会封IP)

  • 西次代理
  • 快代理
  • 什么是高匿名,匿名和透明代理?他们有什么区别?

        (1)使用透明代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP。

        (2)使用匿名代理,对方服务器可以知道你使用了代理,但不知道你的真实IP。

        (3)使用高匿名代理,对方服务器不知道你使用了代理,也不知道你的真实IP。

3.验证码访问

        打码平台:云打码平台

4.动态加载网页:网站返回的是js数据,并不是网页真实数据;selenium驱动真实的浏览器发送请求。

5.数据加密

        分析js代码

二、Urllib基本使用

 目标:使用urllib获取百度网站首页的源码

urllib不需要安装,python自带,可直接使用

1.导入我们需要的包

# 使用urllib获取百度首页的源码
import urllib.request

2.定义一个url

# 1.定义一个url(你要访问的网页地址)
url = "http://www.baidu.com"

 3.模拟浏览器向服务器发送请求

注意发送请求时要确保你的电脑是联网,不然就会报错

使用 urllib.request.urlopen() 方法发送请求

# 2.模拟浏览器向服务器发送请求(联网)
response = urllib.request.urlopen(url)

4.获取响应中的页面的源码

使用 read() 方法读取数据

这里注意要将获取的数据进行解码 decode(),否则无法解析网页中的中文。

# 3.获取响应中的页面的源码
# read()方法 返回的是字节形式的二进制数据
# 将二进数数据转换为字符串
# 二进制-->字符串  这个动作叫做解码 decode("编码的格式")
# 网页的编码格式可以看网页源码中 head --> meta --> content 里的charset中有写明
content = response.read().decode('utf-8')

5.打印数据

# 4.打印数据
# 打印结果:b'<!DOCTYPE html><!--STATUS OK--><html><head><meta。。。
print(content)

完整代码:

# 使用urllib获取百度首页的源码
import urllib.request

# 1.定义一个url(你要访问的网页地址)
url = "http://www.baidu.com"

# 2.模拟浏览器向服务器发送请求(联网)
response = urllib.request.urlopen(url)

# 3.获取响应中的页面的源码
# read()方法 返回的是字节形式的二进制数据
# 将二进数数据转换为字符串
# 二进制-->字符串  这个动作叫做解码 decode("编码的格式")
# 网页的编码格式可以看网页源码中 head --> meta --> content 里的charset中有写明
content = response.read().decode('utf-8')


# 4.打印数据
# 打印结果:b'<!DOCTYPE html><!--STATUS OK--><html><head><meta。。。
print(content)

三、一个类型和六个方法

1.定义url,并向服务器发送请求

# 1.定义一个url(你要访问的网页地址)
url = "http://www.baidu.com"

# 2.模拟浏览器向服务器发送请求(联网)
response = urllib.request.urlopen(url)

2.一个类型

服务器返回的响应是HTML格式

# 3.获取响应中的页面的源码
print(type(response))   # <class 'http.client.HTTPResponse'>

3.六个方法

注意:以下读取的content都需要加 decode()进行解码,否则无法解析网页中的中文。

(1)read() 方法 

# 按照一个字节一个字节的去读整个网页的字节
content = response.read()
# 读五个字节
content = response.read(5)

(2)读取一行

# 读取一行
content = response.readline()

(3)一行一行的读,读所有字节

# 一行一行的读,读取所有字节
content = response.readlines()
print(content)

(4)返回状态码

# 返回状态码 如果是200,则表示请求成功
print(response.getcode())

(5)返回url地址

# 返回 URL 地址
print(response.geturl())

 (6)返回状态信息

# 获取的是一些状态信息
print(response.getheaders())

完整代码:

import urllib.request


# 1.定义一个url(你要访问的网页地址)
url = "http://www.baidu.com"


# 2.模拟浏览器向服务器发送请求(联网)
response = urllib.request.urlopen(url)


# 3.获取响应中的页面的源码(获取到的都是二进制的,后面需要再decode())
# 一个类型和六个方法:HTTPResponse  read, readline, readlines, getcode, geturl, getheaders
# print(type(response))   # <class 'http.client.HTTPResponse'>

# 按照一个字节一个字节的去读整个网页的字节
# content = response.read()

# 读五个字节
# content = response.read(5)

# 读取一行
# content = response.readline()

# 一行一行的读,读取所有字节
# content = response.readlines()
# print(content)

# 返回状态码 如果是200,则表示请求成功
print(response.getcode())

# 返回 URL 地址
print(response.geturl())

# 获取的是一些状态信息
print(response.getheaders())

参考

尚硅谷Python爬虫教程小白零基础速通(含python基础+爬虫案例)

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

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

相关文章

C++初阶 | [七] string类(上)

摘要&#xff1a;标准库中的string类的常用函数 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c; 但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP(面向对象)的思想&#…

【vue】vue-slick-carousel插件,实现横向滚动列表手动左右滚动(也可设置为自动滚动)

需求&#xff1a;图片列表横向滚动的时候&#xff0c;隐藏原始滚动条&#xff0c;通过左右箭头控制滚动条往左右按一定的步长移动。 el-carousel走马灯一滚动就是一屏&#xff0c;不适合我的需求 在npm官网搜vue-slick-carousel&#xff0c;查看更详细的配置 vue-slick-caro…

解决xshell连接诶树莓派中文乱码的问题

系统版本 解决办法 在根目录下找到 /etc/profile 修改profile文件,添加以下两行.以便重启之后也能生效: export LANGzh_CN.utf8 export LC_ALLzh_CN.utf8注意: /etc/profile的修改需要root权限才能修改! 在xshell的编码格式改为UTF-8

全志T527设置gpio口输出高电平实际输出低电平

前言 在调试T527的时候&#xff0c;主板另外添加了gpio口去控制usb口的电源开关&#xff0c;软件上面需要在内核运行的时候将gpio口设置输出高电平&#xff0c;usb口才可以正常使用。改好系统固件后&#xff0c;升级发现&#xff0c;机器开机动画过程中可以控制gpio口去打开us…

竞赛选题YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快&#xff0c;YOLOv6还没用熟YOLOv7就来了&#xff0c;如果有同学的毕设项目想用上最新的技术&#xff0c;不妨看看学长的这篇文章&#xff0c;学长带大家简单的…

[C国演义] 第二十三章

第二十三章 两个字符串的最小ASCLL删除和最长重复子数组 两个字符串的最小ASCLL删除和 力扣链接 求 删除字符的ASCLL和的最小值 ⇒ 正难则反 ⇒ 求公共子序列的ASCLL和的最大值 两个数组的dp问题 ⇒ 分区间讨论 ⇒ dp[i][j] -- nums1数组的[0, i] 区间 和 nums2数组的[0, j] …

《opencv实用探索·九》中值滤波简单理解

1、引言 均值滤波、方框滤波、高斯滤波&#xff0c;都是线性滤波方式。由于线性滤波的结果是所有像素值的线性组合&#xff0c;因此含有噪声的像素也会被考虑进去&#xff0c;噪声不会被消除&#xff0c;而是以更柔和的方式存在。这时使用非线性滤波效果可能会更好。中值滤波是…

手搓图片滑动验证码_JavaScript进阶

手搓图片滑动验证码 背景代码效果图展示网站 背景 在做前端项目开发的时候&#xff0c;少不了登录注册部分&#xff0c;既然有登录注册就少不了机器人验证&#xff0c;验证的方法有很多种&#xff0c;比如短信验证码、邮箱验证码、图片滑动、图片验证码等。 由于鄙人在开发中…

“团团活力圈”—“玩转柔力球 青春展风采”青少年柔力球体验活动

柔力球项目是中华优秀传统文化创造性转化、创新性发展的成功典范&#xff0c;它融合了传统太极运动方式与现代竞技双重特征于一体&#xff0c;强调内外双修&#xff0c;是一项集健身性、竞技性、表演性为一体的极富中华民族特色的体育运动。 为进一步促进柔力球运动在青少年人…

RK3588 Yolov5 部署进行目标识别

一、环境说明&#xff1a; 1、上位机 主机配置&#xff1a;win10&#xff08;强制要求win 10&#xff09;OS专业版 22H2 虚拟化软件&#xff1a;VMware pro 17.0.2&#xff1b; 虚拟机系统&#xff1a;Ubuntu20.04.1&#xff08;要求>18.0&#xff09;&#xff1b;x86-64位…

【软考S01计算机系统知识】E01 中央处理单元

E01 中央处理单元 计算机系统硬件基本组成中央处理单元组成功能 多核 CPU 计算机系统硬件基本组成 计算机系统由硬件和软件组成&#xff0c;基本硬件系统由 运算器、控制器、存储器、输入设备 和 输出设备 5大部件组成&#xff1b; 中央处理单元&#xff1a; 运算器、控制器等…

低代码简化开发流程,强大的开发利器

目录 一、与传统IT开发相比&#xff0c;低代码开发的优势 二、低代码是时代发展的产物 三、善用低代码 四、总结 软件开发已经成为企业发展不可或缺的一环。然而&#xff0c;传统的软件开发模式常常面临着繁琐冗长的工作流程、高昂的开发成本以及难以跟进快速变化的市场需求的挑…

微服务调用组件Feign

JAVA 项目中如何实现接口调用&#xff1f; 1&#xff09;Httpclient HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、最新的、功能丰富 的支持 Http 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传…

Spring Boot 3 整合 Spring Cache 与 Redis 缓存实战

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

服务器托管与服务器租用的详细比较

​  在当今数字化时代&#xff0c;服务器托管和服务器租用成为了许多企业和个人选择的两种常见方式。它们都提供了一种将服务器放置在专业机房中的解决方案&#xff0c;但在具体实施和使用过程中存在一些差异。下面将详细比较这两种方式的优势和劣势。 1. 服务器托管 服务器托…

Wnmp本地搭建结合内网穿透实现远程访问本地Wnmp服务

文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&a…

拒绝废话,直接开画!Python零基础教程之画图

引文 很多教程&#xff0c;开始教python&#xff0c;就是语法呀&#xff0c;字符类型这些基础的&#xff0c;虽说是基础&#xff0c;你也不能说没用。 但是&#xff0c;对于前期要快速成长的我们来说&#xff0c;属实不够看。 我们是新手&#xff0c;我们是菜鸟&#xff0c;但…

2、Linux_远程操作

远程操作 1.配置ifconfig 1.1输入 ifconfig 查看 ip 的命令( ifconfig ) 1.2搜索 ifconfig 命令&#xff08;yum search ifconfig&#xff09; 1.3配置网卡 进入如下目录配置网卡 cd /etc/syscofig/network-scripts编辑 ifcfg-ens33 vi ifcfg-ens33按 i 键进入编辑模式 按 …

好大夫数据爬取

好大夫数据爬取 问诊数据评论数据医生数据科普号数据医患交流数据 可按照疾病进行所有医生的数据&#xff0c;也可以抓所有问诊数据、评论数据 突破限制&#xff0c;快速交付

UI咨询公司-蓝蓝设计:顶级秘籍:提升UI设计吸引力的3大绝招

想要让你的UI设计在海量应用中脱颖而出&#xff0c;吸引用户眼球吗&#xff1f;如果你正在寻找提升UI设计吸引力的绝妙方法&#xff0c;那么你绝对不能错过本文&#xff01;我们将为你揭示顶级UI设计师都不会告诉你的3大绝招&#xff0c;让你轻松掌握提升UI设计吸引力的关键技巧…