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

news2024/9/28 1:43:35

目录

一、爬虫简介

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基础+爬虫案例)

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

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

相关文章

BFS求树的宽度——结合数组建树思想算距离

二叉树最大宽度 https://leetcode.cn/problems/maximum-width-of-binary-tree/description/ 1、考虑树的宽度一定是在一层上的所以进行BFS&#xff0c;树的BFS不建议直接使用队列&#xff0c;每次add/offer然后poll/remove&#xff0c;这样子层级关系不好显示。我们可以定义…

深入解析常见的软件架构模式

在软件开发领域&#xff0c;选择合适的架构模式对于项目的可维护性和扩展性至关重要。本文将深入探讨常见的软件架构模式&#xff0c;包括MVC、MVP、MVVM、MVVM-C以及VIPER。 1. MVC&#xff08;Model-View-Controller&#xff09; MVC 是一种经典的软件架构模式&#xff0c;将…

电子学会C/C++编程等级考试2022年06月(四级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:公共子序列 我们称序列Z = < z1, z2, ..., zk >是序列X = < x1, x2, ..., xm >的子序列当且仅当存在 严格上升 的序列< i1, i2, ..., ik >,使得对j = 1, 2, ... ,k, 有xij = zj。比如Z = < a, b, f, c &…

MYSQL练题笔记-聚合函数-即时食物配送

我做完上一道题&#xff0c;决定总结一下了&#xff0c;因为现在还是没有一个我认为好的思路去构造语句&#xff0c;这里开始试一试新的思路。果然想要好一点的时候&#xff0c;总是像便秘一下&#xff0c;真的想拉&#xff0c;但是真的难拉啊 一、题目相关内容 1&#xff09…

软件测试HR总结的软件测试常见面试题

一、测试流程是什么样的&#xff1f; 1.产品确定需求后&#xff0c;邀请项目经理&#xff0c;开发&#xff0c;测试等人员参加需求评审会&#xff1b; 2.评审结束后开发根据需求文档和接口文档开发&#xff0c;测试制定测试计划和编写手工测试用例&#xff0c;测试脑图&#xf…

给 Web 前端工程师看的用 Rust 开发 wasm 组件实战 | 京东云技术团队

什么是wasm组件&#xff1f; wasm 全称 WebAssembly&#xff0c;是通过虚拟机的方式&#xff0c;可以在服务端、客户端如浏览器等环境执行的二进制程序。他有速度快、效率高、可移植的特点。 对我们 Web 前端工程最大的好处就是可以在浏览器端使用二进制程序处理一些计算量大…

STM32串口接收不定长数据(空闲中断+DMA)

玩转 STM32 单片机&#xff0c;肯定离不开串口。串口使用一个称为串行通信协议的协议来管理数据传输&#xff0c;该协议在数据传输期间控制数据流&#xff0c;包括数据位数、波特率、校验位和停止位等。由于串口简单易用&#xff0c;在各种产品交互中都有广泛应用。 但在使用串…

华为云云绘本第一期:童话奇迹原来是你

点此进入官网&#xff0c;专家1对1&#xff1a;应用身份管理服务OneAccess_华为云IDaaS-华为云

视频剪辑自动化:批量色调调整技巧,让工作更轻松

随着数字媒体技术的不断发展&#xff0c;视频剪辑已经成为许多行业不可或缺的一部分。然而&#xff0c;对于许多剪辑师来说&#xff0c;色调调整是视频剪辑过程中一项繁琐且耗时的任务。如何提高工作效率&#xff0c;本文讲解云炫AI智剪如何批量调整色调技巧&#xff0c;让视频…

基于现代学徒制的大数据技术与应用人才培养模式探讨

学生学徒制的实施旨在解决当前新技术企业招聘技能人才难和青年就业难的结构性矛盾&#xff0c;通过生态链链主企业携手院校共同解决毕业年度学生就业问题&#xff0c;按照学生个人意愿&#xff0c;建立以就业导向的学生学徒制关系&#xff0c;签订学徒培养协议确定学生就业岗位…

SoC with CPLD and MCU ?

AG32 MCU 产品支持多种接口外设&#xff0c;具备与业界主流产品的兼容性&#xff0c;并内置额外的2K FPGA 可编程逻辑。 产品支持 LQFP-48&#xff0c;LQFP-64&#xff0c;LQFP-100 &#xff0c;QFN-32等不同封装。其所有可用 IO 都可以任意地进行映射和互换&#xff0c;以灵活…

低噪声,带内置 ALC 回路的双通道均衡放大器,应用于立体声收录机和盒式录音机的芯片D3308的描述

D3308 是一块带有 ALC 的双通道前置放大器。它适用于立体声收录机和盒式录音机。采用 SIP9、SOP14 的封装形式封装。 主要特点 带内置 ALC 回路的双通道均衡放大器 低噪声: VNIl.OuV(典型值)。开环电压增益高: 80dB (典型值)工作电源电压范围宽: 通道间的…

在windows server系统下,快速部署自己的网站

目录 xampp简介xampp的作用xampp的安装方法Apache简介Apache的作用 本文主要介绍使用xampp软件包在windows server系统下&#xff0c;快速部署自己的网站。 xampp简介 XAMPP是一款基于Apache、MySQL、PHP和Perl的开源Web服务器软件包。XAMPP支持多个操作系统&#xff0c;包括W…

电压驻波比

电压驻波比 关于IF端口的电压驻波比 一个信号变频后&#xff0c;从中频端口输出&#xff0c;它的输出跟输入是互异的。这个电压柱波比反映了它输出的能量有多少可以真正的输送到后端连接的器件或者设备。

单细胞测序并不一定需要harmony去除批次效应

大家好&#xff0c;今天我们分享的是单细胞的学习教程https://www.singlecellworkshop.com/analysis-tutorial.html 教程的作者使用了四个样本&#xff0c;但是没有使用harmony或者其他方法去整合 去除批次效应。 主要内容&#xff1a; SCTransform流程代码及结果 harmony流程…

第一节JavaScript 简介与使用

JavaScript简介 JavaScript是互联网上最流行的脚本语言&#xff0c;这门语言可用于HTML和Web&#xff0c;更广泛用于服务器、PC、电脑、智能手机等设备上。 JavaScript是一种轻量级的编程语言。 JavaScript是可插入HTML页面的编程代码。 JavaScript插入HTML页面后&#xff…

【模电】基本共射放大电路的工作原理及波形分析

基本共射放大电路的工作原理及波形分析 在上图所示的基本放大电路中&#xff0c;静态时的 I B Q I\tiny BQ IBQ、 I C Q I\tiny CQ ICQ、 U C E Q U\tiny CEQ UCEQ如下图( b )、( c )中虚线所标注。 &#xff08; a &#xff09; u i 的波形&#xff08; b &#xff09; i B …

SRE-架构框架-可靠性

Google-架构框架-可靠性 可靠性概览 Google Cloud 架构框架中的此类别介绍如何在云平台上构建和运营可靠的服务。此外&#xff0c;您还将了解一些支持可靠性的 Google Cloud 产品和功能。 该架构框架介绍了最佳实践&#xff0c;提供了实现建议&#xff0c;并说明了一些可用的…

深入理解:指针变量的解引用 与 加法运算

前言 指针变量的解引用和加法运算是非常高频的考点&#xff0c;也是难点&#xff0c;因为对初学者的不友好&#xff0c;这就导致了各大考试都很喜欢在这里出题&#xff0c;通常会伴随着强制类型转换、二维数组、数组指针等一起考查大家对指针的理解。但是不要怕&#xff0c;也许…

希宝猫罐头怎么样?专业人士告诉你质量好的猫罐头推荐

作为当了6年铲屎官的我来说&#xff0c;对猫咪的日常饮食来源还是蛮有学问的&#xff0c;我也是给我家的猫咪买过比较多的罐头了。怎么喂养猫罐头还是有技巧的。那么希宝猫罐头好不好呢&#xff1f; 希宝猫罐头&#xff0c;工艺精湛&#xff0c;追求卓越。它的包装考究&#x…