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

news2024/11/24 13:47:17

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("数据访问失败")



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

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

相关文章

2023/7/26总结

最近都花时间在项目上 修改了发布文章的界面 然后文章可以上传图片了 修改了个人主页的界面(这里把js代码注释掉了,所以没用内容) 大概画了一下管理员的界面 和消息列表的界面 做了评论的界面:(还没开始写&#xff0c…

“华为杯”研究生数学建模竞赛2019年-【华为杯】F题:多约束条件下智能飞行器航迹快速规划

目录 摘 要: 一、 问题重述 1.1 问题背景 1.2 需要解决的问题 二、 模型假设 三、符号说明 四、问题一 4.1 问题描述与分析 4.2 模型建立 4.2.1 数据处理 4.2.2 航迹规划模型建立 4.3 求解算法建立 4.3.1 最短路径数学表达 4.3.2 自适应改进型 Dijkstr…

力扣热门100题之合并区间【中等】

题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:interv…

Docker啥是数据持久化?

文章目录 数据持久化数据卷相关命令创建读写数据卷创建只读数据卷数据卷共享数据卷容器实现数据卷共享nginx实现数据卷共享nfs总结 Dockerfile持久化Dockerfile方式docker run总结 数据持久化 ​ 在容器层的 UnionFS(联合文件系统)中对文件/目录的任何修…

动态分段的JavaScript实现【线性参考】

有许多很酷的 GIS 应用程序将海拔和距离结合在一起。 当用户沿着高程图拖动光标时,地图上的位置通常会更新。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 在尝试将此功能构建到我的一个项目中时,我了解到它需要一种称为线性参考(…

java排序算法之插入排序

文章目录 📋插入排序概念📖实现步骤🔖代码示例 📈总结 📋插入排序概念 插入排序(Insertion Sort)是一种简单直观的排序算法。它将数组划分为已排序和未排序两个部分,每次从未排序部分…

iTOP-RK3568开发板Docker 安装 Ubuntu 18.04

Docker 下载安装 Ubuntu18.04,输入以下命令: sudo apt update docker pull ubuntu:18.04 切换 Shell 到 Ubuntu 18.04,输入以下命令: docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bash -p 参数:容器的…

Shell脚本学习-shift语句的使用

[rootvm1 scripts]# help shift shift: shift [n]Shift positional parameters.Rename the positional parameters $N1,$N2 ... to $1,$2 ... If N isnot given, it is assumed to be 1.Exit Status:Returns success unless N is negative or greater than $#.说明&#xff1a…

vue解决跨域访问问题(个人学习笔记六)

目录 友情提醒第一章、跨越问题解决1.1)什么是跨域问题?1.2)第一种解决方式:后端设置允许跨域访问1.3)第二种解决方式:前端配置代理 第二章、配置代理服务器2.1)配置简单代理服务器2.2&#xff…

GPT-AI 使用的技术概览

ChatGPT 使用的技术概览 智心AI-3.5/4模型,联网对话,MJ快速绘画 从去年 OpenAI 发布 ChatGPT 以来,AI 的能力再次惊艳了世人。在这样的一个时间节点,重新去学习相关技术显得很有必要。 ChatGPT 的内容很多,我计划采用…

Git下载与安装

文章目录 一、Git下载二、Git安装1.双击下载好的安装包进行安装2.Next3.选择Git的安装目录(不要带有中文和空格)→Next4.Next5.Next6.Next7.Next8.Next9.Next10.Next11.Next12.Next13.Next14.Next15.Next16.Install17.等待安装18.Finish19.鼠标光标放到系统桌面右击看到如下图所…

【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织

前言 在数据科学和数据分析领域,Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具,帮助我们高效地处理和分析数据。其中,索引在Pandas中扮演着关键角色,它是一种强大的数据组织和访问机制,使我们…

Java那些“锁”事 - 公平锁和非公平锁

在Java中,锁可以分为公平锁(Fair Lock)和非公平锁(Nonfair Lock),它们的区别在于线程获取锁的顺序是否遵循公平性原则。 公平锁 公平锁是指多个线程按照它们发出请求的顺序获取锁,即先到先得的原…

QT:当登录成功时,关闭登录界面,跳转到新的界面中

1> 继续完善登录框,当登录成功时,关闭登录界面,跳转到新的界面中 widget.h #include "widget.h" //#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent)//, ui(new Ui::Widget) {//ui->setu…

Cesium态势标绘专题-集结地(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

IOS自动化测试环境搭建教程

目录 一、前言 二、环境依赖 1、环境依赖项 2、环境需求与支持 三、环境配置 1、xcode安装 2、Git安装 3、Homebrew安装(用brew来安装依赖) 4、npm和nodejs安装 5、libimobiledevice安装 6、idevicesinstaller安装 7、ios-deploy安装 8、Ca…

DRS 迁移本地mysql 到华为云

准备工作: 源端的IP地址(公网),用户明和密码。如果通过公网迁移,需要在安全组放通drs访问源端数据库的3306端口。目标端的IP地址,用户名和密码。 创建DRS迁移任务 创建迁移任务 登录华为云控制台。单击管…

自恢复保险丝(PPTC)的金属材料说明

保险丝大家都是知道的,但保险丝当中的自恢复保险丝(PPTC)可能就不太了解的。 其实PPTC自恢复保险丝与大家所认识的保险丝一样,都是起到限流作用,达到电路防护效果。简单来说就是一旦电路中的电流超过所规定的电流时&am…

MixFormerV2: Efficient Fully Transformer Tracking

摘要 基于变压器的跟踪器在标准基准测试上取得了很强的精度。然而,它们的效率仍然是在GPU和CPU平台上实际部署的一个障碍。在本文中,为了克服这一问题,我们提出了一个完全变压器跟踪框架,称为MixFormerV2,没有任何密集…

SpringBoot 配置⽂件

1.配置文件作用 整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如: 数据库的连接信息(包含⽤户名和密码的设置);项⽬的启动端⼝;第三⽅系统的调⽤秘钥等信息;⽤于发现和定位问题的普通⽇…