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

爬虫之爬虫介绍、requests模块、携带请求参数、url 编码和解码、携带请求头

爬虫介绍

爬虫是什么?

  • 网页蜘蛛,网络机器人,spider
  • 在互联网中 通过 程序 自动的抓取数据 的过程
  • 根上:使用程序 模拟发送http请求 ⇢ \dashrightarrow 得到http响应 ⇢ \dashrightarrow 把响应的数据解析出来 ⇢ \dashrightarrow 存储起来

做爬虫需要掌握的技术

  1. web端爬虫(网页)
    1. 抓包:抓包工具 ⇢ \dashrightarrow 浏览器,charles,fiddler
  2. 发送http请求的模块
    • requests:同步的 ⇢ \dashrightarrow 不仅仅做爬虫用 调用第三方api就可以使用
    • request-html:
    • aiohttp:异步的http模块
  3. 解析库:http响应 ⇢ \dashrightarrow 可能是xml,html,json,文件,图片… ⇢ \dashrightarrow 响应中解析出想要的数据
    • beautifulsoup4 ⇢ \dashrightarrow xml/html
    • lxml ⇢ \dashrightarrow xml/html
    • selenium ⇢ \dashrightarrow 请求加解析(本质是模拟浏览器)
    • json
  4. 存储:mysql,redis,es,mongodb…
    • pymysql:aiomysql
    • redis:aioredis
    • elasticsearch.py
    • py-mongo
  5. 移动端爬虫(app)
    • 抓包,发请求,解析,存储跟web一样的
    • 对app进行反编译 ⇢ \dashrightarrow jadx
      • 安卓:java写的app ⇢ \dashrightarrow 把app反编译成java ⇢ \dashrightarrow 懂java ⇢ \dashrightarrow 看懂逻辑 ⇢ \dashrightarrow 使用python模拟这个过程
    • hook技术 ⇢ \dashrightarrow frida
    • c语言写加密—》用java调用c语言的加密方式—》xx.so–>动态链接库文件
      • 反编译 so文件—》IDA—》反编译成汇编和c
      • 动态调试
    • python模拟这个过程即可
  6. 反扒
    • 请求头反扒:user-agent,referfer:上一个访问的地址是什么
    • 反扒:无限调试
    • 封ip ⇢ \dashrightarrow ip代理池
      -封账号 ⇢ \dashrightarrow cookie池
      -js加密 ⇢ \dashrightarrow js逆向

动态链接库

百度,谷歌 搜索引擎本质其实就是个大爬虫 ⇢ \dashrightarrow 不停的在互联网上爬取页面 ⇢ \dashrightarrow 存到自己的库中
使用搜索的时候 ⇢ \dashrightarrow 去百度的数据库中查询相关的关键字 ⇢ \dashrightarrow 显示在页面上 ⇢ \dashrightarrow 当我们点击某一个 ⇢ \dashrightarrow 真正的跳转到 真正的搜索到的页面

百度做爬取时 ⇢ \dashrightarrow 对动态页面的爬取权重要低
seo优化 ⇢ \dashrightarrow 保证我们公司的网站通过关键字搜索,显示在第一个
- 伪静态 ⇢ \dashrightarrow
sem:付费买关键词

requests模块快速使用

介绍:

使用requests可以模拟浏览器的请求,比起之前用到的urllib(内置模块),requests模块的api更加便捷(本质就是封装了urllib3)

注意:

requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求

  1. 混合项目 ⇢ \dashrightarrow 拿回来的页面—带数据
  2. 分离项目 ⇢ \dashrightarrow 拿回来的页面 ⇢ \dashrightarrow 数据是空的 ⇢ \dashrightarrow 再分析接口 ⇢ \dashrightarrow 再发请求才能拿到真正的数据

看到一个页面有数据 ⇢ \dashrightarrow 用requests发送请求 ⇢ \dashrightarrow 拿回来的,可能跟看到的不一样

快速使用

  1. 安装模块:pip install requests
  2. 使用:
    import requests# res中会有:http响应  响应头的,响应体的
    res = requests.get('https://www.cnblogs.com/')# 响应体的文本字符串(可能会乱码)
    print(res.text)```
    

get请求携带请求参数

  1. 方式一:直接拼在后面
    res=requests.get('https://www.cnblogs.com/?ordering=-id&search=课程')
    
  2. 方式二:使用params参数
    res=requests.get('https://www.cnblogs.com/',params={'ordering':'-id','search':'课程'})
    print(res.text)
    

url 编码和解码

获得的网页内容可能会出现:%E7%BE%8E%E5%A5%B3
不是乱码 ⇢ \dashrightarrow url编码了

url解码

res=parse.unquote('%E7%BE%8E%E5%A5%B3')
print(res)

url编码

res=parse.quote('刷币')  # %E5%88%B7%E5%B8%81
print(res)

携带请求头

请求头中可能有的:User-Agent,referer,cookie,Host

  1. User-Agent:是消息头,可以在该消息头内了解到该网站所支持的浏览器同时可以知道访问该网站所用的浏览器以及浏览器版本,还能了解登录用的操作系统以及系统是多少位的。
  2. referer:代表从哪里来到当前页面进行访问的,百度推广就是通过referer进行的统计来访人数。不带referer可以直接下载带referer说明有防盗链。
  3. host:代表主机已百度为例,网址中www.baidu.com的host就是www.baidu.com
    http1.1后面的1.1代表版本的协议号 ,分为1.0和1.1两个版本,发部分使用1.1版本,且 1.1版本必须要host请求头
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
}
res = requests.get('https://www.sogou.com/web?query=%E7%BE%8E%E5%A5%B3', headers=header)
# res=requests.request('get','url',headers=header)
print(res.text)

相关文章:

爬虫之爬虫介绍、requests模块、携带请求参数、url 编码和解码、携带请求头

爬虫介绍 爬虫是什么? 网页蜘蛛,网络机器人,spider在互联网中 通过 程序 自动的抓取数据 的过程根上:使用程序 模拟发送http请求 ⇢ \dashrightarrow ⇢ 得到http响应 ⇢ \dashrightarrow ⇢ 把响应的数据解析出来 ⇢ \dashr…...

pytorch笔记:split

torch.split 是 PyTorch 中的一个函数,用于将张量按指定的大小或张量数量进行分割 1 基本使用方法 torch.split(tensor, split_size_or_sections, dim0)tensor要分割的输入张量split_size_or_sections以是整数或整数列表。 如果是整数,那么它表示每个分…...

K8S运维 解决openjdk:8-jdk-alpine镜像时区和字体问题

目录 一、问题 二、解决 三、完整代码 一、问题 由于项目的Dockerfile中使用openjdk:8-jdk-alpine作为基础镜像来部署服务,此镜像存在一定问题,例如时差8小时问题,或是由于字体问题导致导出excel文件,图片处理内容为空等。 二…...

Kubectl详解(陈述式、声明式)

目录 1、陈述式资源管理方法 1.1 基本信息查看 1.2 项目的生命周期:创建-->发布-->更新-->回滚-->删除 1.3 金丝雀发布(Canary Release) 2、声明式管理方法 1、陈述式资源管理方法 1.kubernetes 集群管理集群资源的唯一入口是…...

使用HttpClient库的爬虫程序

使用HttpClient库的爬虫程序,该爬虫使用C#来抓取内容。 using System; using System.Net.Http; using System.Threading.Tasks; ​ namespace CrawlerProgram {class Program{static void Main(string[] args){// 创建HttpClient对象using (HttpClient client new…...

VSIX:C#项目 重命名所有标识符(Visual Studio扩展开发)

出于某种目的(合法的,真的合法的,合同上明确指出可以这样做),我准备了一个重命名所有标识符的VS扩展,用来把一个C#库改头换面,在简单的测试项目上工作很满意,所有标识符都被准确替换…...

【CSDN 每日一练 ★★☆】【动态规划】最小路径和

【CSDN 每日一练 ★★☆】【动态规划】最小路径和 动态规划 题目 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 示例 1&#x…...

前端学习之webpack的使用

概述 webpack是一个流行的前端项目构建工具(打包工具),可以解决当前web开发中所面临的问题。 webpack提供了友好的模块化支持,以及代码压缩混淆、处理js兼容问题、性能优化等强大的功能,从而让程序员把工作重心放到具…...

【java学习—十一】泛型(1)

文章目录 1. 为什么要有泛型Generic2. 泛型怎么用2.1. 泛型类2.2. 泛型接口2.3. 泛型方法 3. 泛型通配符3.1. 通配符3.2. 有限制的通配符 1. 为什么要有泛型Generic 泛型,JDK1.5新加入的,解决数据类型的安全性问题,其主要原理是在类声明时通过…...

CN考研真题知识点二轮归纳(4)

持续更新,上期目录: CN考研真题知识点二轮归纳(4)https://blog.csdn.net/jsl123x/article/details/134135134?spm1001.2014.3001.5501 1.既可以扩展网段又是二层的设备 网段一般指一个计算机网络中使用同一物理层设备&#xff…...

ROS学习笔记(4):ROS架构和通讯机制

前提 前4篇文章以及帮助大家快速入门ROS了,而从第5篇开始我们会更加注重知识积累。同时我强烈建议配合B站大学的视频一起服用。 1.ROS架构三层次: 1.基于Linux系统的OS层; 2.实现ROS核心通信机制以及众多机器人开发库的中间层&#xff1b…...

深度新闻稿件怎么写?新闻稿怎么写得有深度?

深度新闻稿件,顾名思义,是对新闻事件进行深入挖掘和分析的稿件。它不仅仅是对事件的简单报道,更注重对事件背后的社会现象、原因、影响等方面进行深度剖析,从而使读者能够全面、深入地了解事件。这种稿件要求作者具备较高的新闻敏…...

百度智能云千帆大模型平台黑客马拉松报名开启!

比赛简介 创造是生成式 AI 的核心。无论是智能导购带来的线上购物体验升级,还是主图生成带来的素材生产效率提升,又或是游戏场景的快速设置、智能 NPC 的全新交互、数字广告的精准推荐和个性化定制,亦或者是为学生提供更符合真实的口语练习环…...

数据库 | 看这一篇就够了!最全MySQL数据库知识框架!

大家好! 作为一名程序员,每天和各种各样的“数据库”打交道,已经成为我们的日常。当然,立志成为一名超级架构师的我,肯定要精通这项技能。咳咳!不过饭还是要一口一口吃的,“数据库”这个内容实在…...

Android 控件背景实现发光效果

主要实现的那种光晕效果&#xff1a;中间亮&#xff0c;四周逐渐变淡的。 这边有三种发光效果&#xff0c;先上效果图。 第一种、圆形发光体 实现代码&#xff1a;新建shape_light.xml&#xff0c;导入以下代码。使用时&#xff0c;直接给view设置为background。 <?xml …...

安全狗亮相厦门市工信领域数据安全宣贯培训会

10月31日&#xff0c;厦门市工业和信息化局&#xff08;市大数据管理局&#xff09;顺利举办厦门市工信领域数据安全宣贯培训。 作为国内云原生安全领导厂商&#xff0c;安全狗以厦门市工业领域数据安全管理支撑单位身份受邀出席此次会议。 据悉&#xff0c;此次活动旨在贯彻…...

最长回文子串

问题 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同…...

从瀑布模式到水母模式:ChatGPT引领软件研发的革新之路

ChatGPT引领软件研发的革新之路 概述操作建议本书优势 内容简介作者简介专家推荐读者对象目录直播预告写在末尾&#xff1a; 主页传送门&#xff1a;&#x1f4c0; 传送 概述 计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地改变了…...

一种使用wireshark快速分析抓包文件amr音频流的思路方法

解决方案&#xff1a; 1. 使用wireshark过滤amr,并导出原始数据文件&#xff1b; 2.使用ue的二进制编辑模式&#xff0c;编辑该文件&#xff0c;添加amr头&#xff0c;6个字节数据“#!AMR”&#xff0c;字节数据为 23 21 41 4D 52 0A 3.修正格式&#xff1a;通过抓包发现&#…...

银河麒麟x86版、银河麒麟arm版操作系统编译zlmediakit

脚本 # 安装依赖 gcc-c.x86_64 这个不加的话会有问题 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64mkdir -p /home/zenglg cd /home/zenglg git clone --depth 1 https://gitee.com/xia-chu…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

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

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