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

Python 爬虫的学习 day01 ,爬虫的基本知识, requests 和 charde模块, get函数的使用

1.Python 爬虫

1.1什么是网络爬虫

网络爬虫,又称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。


1.2  网络爬虫的特点

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成,传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。


1.3 网络爬虫的种类

1.3.1 通用网络爬虫

通用网络爬虫又称全网爬虫,爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据,这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。

1.3.2 聚焦网络爬虫

聚焦网络爬虫,又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫,和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。


1.4 爬虫的作用

统计数据

冷数据启动时丰富数据的主要工具,新业务开始时,由于刚起步,所以没有多少数据,此时就需要爬取其他平台的数据来填充我们的业务数据。

爬虫抢票

相信每逢春运或是节假日,大家都用过一些抢票的软件,就为了获得一张机票或者是一张火车票,而这种出行类软件正是运用网络爬虫技术来达到抢票的目的,像抢票软件这样的网络爬虫,会不停地爬取交通出行的售票网站,一旦有票就会点击拍下来,放到自己的网站售卖。

参考文章:网络爬虫是什么意思 (baidu.com)



2. post 请求 和 get 请求

2.1 post请求 

1. 首先 post请求本质上就是TCP链接;

2. post请求一般作为发送数据到后台,传递数据,创建数据;

3. post请求则是将传递的参数放在request body中,不会在地址栏显示,安全性比get请求高,参数没有长度限制;

4.刷新浏览器或者回退的时候 , post请求则会重新请求一遍;

5. post请求不会被缓存,也不好保留在浏览器的历史记录中;

6. post常见的则是form表单请求;

7. 对参数的数据类型,post没有限制;


2.2 get 请求

1. 首先 get请求本质上就是TCP链接;

2. get请求也可以传参到后台,但是传递的参数则显示在地址栏,安全性低,且参数的长度也有限制(2048字符);

3. get请求刷新浏览器或者回退没有影响;

4. get请求可以被缓存,也会保留在浏览器的历史记录中;

5. get请求通常是通过url地址请求;

6. 对参数的数据类型,get只接受ASCII字符

7. get比post更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

参考文章:post和get请求的区别是什么-常见问题-PHP中文网

参考文章:get请求和post请求 理解 - 小log - 博客园 (cnblogs.com)



3. url  的组成和意义

3.1 url 的概念

Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator, 统一资源定位器)。它是www的统一资源定位标志,简单地说URL就是web地址,俗称“网址”


3.2 url 的组成

url   由  协议、主机名、域名、端口、路径、以及文件名这六个部分构成,其中端口可以省略。具体语法规则如下:

scheme://host.domain:port/path/filename

协议 :// 主机名 . 域名 / 端口(可以省略)/ 路径    文件                                    (注意符号)


3.3 协议有哪些

协议使用场景
http 超文本传输协议。http 协议可以将编码为超文本的数据从一台计算机传送到另一台计算机,不进行加密。
https安全超文本传输协议。以安全为目标的 http 通道,安全网页,加密所有信息交换。
ftp文件传输协议。 格式 FTP://
file本机上的文件   file:///,注意后边应是三个斜杠。
gopher通过 Gopher 协议访问该资源。
mailto 


3.4 主机名

主机名的含义是机器本身的名字,域名是方面记录IP地址才做的一种IP映射,主机名用于局域网中;域名用于公网中。

http://blog.sina.com.cn/中,blog是提供博客服务的那台机器的名字,http://sina.com.cn是域名,http://blog.sina.com.cn是主机名。,计算机名+域名才是主机名


3.5  域名

3.5.1 域名可以认为是主机在公网环境中的标识,在在公网下,对应一个唯一的IP,例如我们访问百度的主页:http://www.baidu.com

3.5.2 域名还分级,从后往前级别依次降低,http://sina.com.cn中,cn是顶级域名,表示中国,com是二级域名,表示商业机构(commercial),sina是三级域名,一般用自己的名字。


3.6 端口

一串用来区分不同程序的数字,通过它我们将信息传给指定程序。

或者说是一个个程序占据了一个线程,一个线程占据了一个端口。


3.7 路径

由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

参考文章:(2条消息) URL的概念与组成_url组成_小宝的宝呢的博客-CSDN博客

参考文章:(4条消息) URL的构成_url组成_sunmengting0123的博客-CSDN博客



4.  requests 和  chardet    的功能  (模块需要下载)

4.1   requests 模块介绍 (这里只是简单介绍,详细的参考文章中看)

1.发送HTTP请求

2.处理响应

3.会话管理

4.文件上传和下载

参考文章:python—requests模块详解_python requests模块_W0ngk的博客-CSDN博客

参考文章:requests库的100种妙用! (baidu.com)


4.2  chardet 模块介绍 (这里只是简单介绍,详细的参考文章中看)

chardet  支持检测中文、日文、韩文等多种语言  和  字符串编码 的识别

参考文章:[转]python 模块 chardet下载及介绍 - 道高一尺 - 博客园 (cnblogs.com)

参考文章:【python】chardet函数用法_微雨停了的博客-CSDN博客



5. requests 和  charde 模块 函数的使用

5.1    requests 模块的 get(url, params,  headers) 函数介绍

参数url :是一个网路地址,目的连接对应服务器。

参数params   :  向网站传递信息。 (例如是:为了查询信息而传递的参数)(我的理解)

参数 headers  :  headers 请求头信息,是为了我们的代码访问更像 正常的网站访问。


5.2 url  参数

5.2.1 怎么寻找 url 

答: 打开一个页面直接 复制它的地址

 为什么只有这一节, 因为后面是传递的参数(params)。


5.3 params 参数

5.3.1 怎么寻找 params参数

答: 打开一个页面观看 地址

5.3.2 想了解更多的  params参数 符号的意义

参考文章:百度/谷歌搜索结果中URL路径中的各参数详解_url后面参数wd是什么_爱上小飞鱼的博客-CSDN博客 


5.4 headers 参数

5.4.1 怎么找到这个参数

第一步 : 打开页面  (右键--》 检查 )  或者  (按下F12)

结果图片:

第二步 : 点击网络   再点击all  或者全部  (没有反应就点击旁边不是 控制界面的地方就行了)

结果图片:

第三步: 点击数据

结果图片:

第四步, 把数据转换为 字典数据模式

  html_headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183"}  #获取这个网站的 请求头文件

5.5 样例代码

import requests  # http 请求函数的库
import chardet   #chardet  支持检测中文、日文、韩文等多种语言  和  字符串编码 函数库
url = 'https://www.baidu.com/s?'html = requests.get(url)
#print(html.text.encode('utf-8')) #打印源代码
if html.status_code == 200 :print(html.url,end='') #输出网址print("第一个 数据访问成功")html_params = {"wd":"周杰伦"}  # get函数   params 参数  这个参数是用来 向这个网站来传递 数据html_headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183"}  #获取这个网站的 请求头文件html1 = requests.get(url,params = html_params,headers = html_headers)  #params 使用传递参数(比如传输 ,账号密码), headers 传递头信息,是为了我们的代码访问更像 正常的网站访问if html1.status_code == 200:print(html.url,end='')print("第二个 数据访问成功")html1.encoding = 'utf-8'print(html1.text)else:past
else: print("数据访问失败")



相关文章:

Python 爬虫的学习 day01 ,爬虫的基本知识, requests 和 charde模块, get函数的使用

1.Python 爬虫 1.1什么是网络爬虫 网络爬虫,又称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 1.2 网络爬虫的特…...

【数据挖掘】时间序列的傅里叶变换:用numpy解释的快速卷积

一、说明 本篇告诉大家一个高级数学模型,即傅里叶模型的使用; 当今,傅里叶变换及其所有变体构成了我们现代世界的基础,为压缩、通信、图像处理等技术提供了动力。我们从根源上理解,从根本上应用,这是值得付…...

Chatgpt Web API 创建对话,免费,不计token数量,模仿网页提交对话

Chatgpt API 是收费的,按token使用量计费 Chatgpt Web API 免费的,只要有账号就可以使用。 curl https://chat.openai.com/backend-api/conversation \-H authority: chat.openai.com \-H accept: text/event-stream \-H accept-language: zh-CN,zh;q…...

嵌入式软件—RK3568开发环境搭建

一、RK3568 1.1 开发板特点 BSP比较大,对于电脑内存和存储空间要求高 1.2 BSP BSP(Board Support Package,板级支持包),类似于PC系统中BIOS和驱动程序的集合,BSP包含的范围更广,除了外设驱动…...

使用 OpenCV 和 GrabCut 算法进行交互式背景去除

一、说明 我想,任何人都可以尝试从图像中删除背景。当然,有大量可用的软件或工具能够做到这一点,但其中一些可能很昂贵。但是,我知道有人使用窗口绘画3D魔术选择或PowerPoint背景去除来删除背景。 如果您是计算机视觉领域的初学者…...

在Windows server 2012上使用virtualBox运行CentOS7虚拟机,被强制休眠(二)

问题场景 本月7月10日处理了一个虚拟机被强制暂停的问题,详见:在Windows server 2012上使用virtualBox运行CentOS7虚拟机,被强制暂停当时是由于C盘存储空间不足,导致虚拟机被强制暂停,将虚拟机迁移后,问题…...

sql学习笔记

sql语句优先级 FROM → WHERE → GROUP BY → SELECT → HAVING → ORDER BY sql case用法 例题: 按照销售单价( sale_price )对练习 3.6 中的 product(商品)表中的商品进行如下分类。 低档商品:销售单价在1000日元以下&#x…...

Ubuntu 20.04.4 LTS安装Terminator终端(Linux系统推荐)

Terminator终端可以在一个窗口中创建多个终端,并且可以水平、垂直分割,运行ROS时很方便。 sudo apt install terminator这样安装完成后,使用快捷键Ctrl Alt T打开的就是新安装的terminator终端,可以使用以下方法仍然打开ubuntu默…...

22. 括号生成

题目描述 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:["((()))","(()())","(())()","()(())",&…...

WPF实战学习笔记05-首页界面

首页界面 新建文件 添加文件[类型:用户控件] ./Common/Models/TaskBars.cs ./Common/Models/ToDoDto.cs ./Common/Models/MemoDto.cs 新建类 TaskBars.cs using System; using System.Collections.Generic; using System.Linq; using Sy…...

一文带你迅速入门SprIngMVC,看这一篇就足够了!

0. 什么是SpringMVC 要知道什么是SpringMVC,我们首先得知道什么 MVC,MVC是软件工程中的一种架构模式,分为 Model、View、Control。它把软件系统分为模型、视图和控制器三个基本部分。 Model:模型,应用程序负责数据逻…...

js路由跳转时放弃正在pending的请求

在单页面应用中通常会对请求进行catch处理,如果用户打开a页面后页面发出了一个请求去获取aaa,但是由于某种原因请求一直在pending。此时用户又进入了b页面,在浏览时a页面的请求失败了,然后页面弹出提示:“数据aaa请求失…...

LeetCode(sql)-0723

聚合函数 620 select * from cinema where mod(id,2)1 and description <> boring order by rating desc1251 select p.product_id, Round(sum(price*units)/sum(units),2)as average_price from UnitsSold u left join Prices p using(product_id) where purchase_d…...

【C++】开源:grpc远程过程调用(RPC)配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍grpc远程过程调用&#xff08;RPC&#xff09;配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜…...

rabbitmq模块启动报java.net.SocketException: socket closed的解决方法

问题 最近在接手一个项目时&#xff0c;使用的是spring-cloud微服务构架&#xff0c;mq消息消费模块是单独一个模块&#xff0c;但启动这个模块一直报如下错误&#xff1a; java.net.SocketException: socket closed 这个错误是这个模块注册不到nacos报的错&#xff0c;刚开…...

uni-app 中定时器的使用

学习目标&#xff1a; 学习目标如下所示&#xff1a; uniapp中通过使用uni-app提供的定时器API来实现定时器功能。 学习内容&#xff1a; 内容如下所示&#xff1a; **uni-app的定时器API分为两种&#xff1a; 1.第一种方式&#xff1a; setTimeout函数&#xff0c;用于设置一…...

基于物联网、视频监控与AI视觉技术的智慧电厂项目智能化改造方案

一、项目背景 现阶段&#xff0c;电力行业很多企业都在部署摄像头对电力巡检现场状况进行远程监控&#xff0c;但是存在人工查看费时、疲劳、出现问题无法第一时间发现等管理弊端&#xff0c;而且安全事件主要依靠人工经验判断分析、管控&#xff0c;效率十分低下。 为解决上述…...

内网穿透远程查看内网监控摄像头

内网穿透远程查看内网监控摄像头 在现代社会中&#xff0c;大家总是奔波于家和公司之间。大部分时间用于工作中&#xff0c;也就很难及时知晓家中的动态情况&#xff0c;对于家中有老人、小孩或宠物的&#xff08;甚至对居住环境安全不放心的&#xff09;&#xff0c;这已然是…...

【Flume 01】Flume简介、部署、组件

1 Flume简介 Flume是一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统 主要特性&#xff1a; 它有一个简单、灵活的基于流的数据流结构&#xff08;使用Event封装&#xff09;具有负载均衡机制和故障转移机制一个简单可扩展的数据模型(Source、Channel、Sink) Sou…...

三款即时通讯工具推荐:J2L3x、Telegram、WhatsApp 你选哪个?

1、J2L3x J2L3x 是一款受欢迎的即时通讯工具&#xff0c;广泛应用于企业团队之间的沟通和协作。它提供了多种通讯方式&#xff0c;包括群组聊天、私人消息和文件共享等&#xff0c;还可以方便地与其他应用程序和服务集成。即使你不在工作场所&#xff0c;你也可以在任何地方使…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...