爬虫之爬虫介绍、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)

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

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

相关文章

小程序如何设置自动预约快递

小程序通过设置自动预约功能,可以实现自动将订单信息发送给快递公司,快递公司可以自动上门取件。下面具体介绍如何设置。 在小程序管理员后台->配送设置处,选择首选配送公司。为了能够支持自动预约快递,请选择正常的快递公司&…

S4.2.4.5 Fast Training Sequence (FTS)

一 本章节主讲知识点 1.1 FTS的用途和实现注意 二 本章节原文翻译 Fast Training Sequence (FTS) 主要用于在L0s->L0跳转的过程中,让Receiver 检测到电气空闲退出,以及实现bit 和 symbol lock。 2.1 Gen1 and Gen2 速率 对于Gen1/2 FTS的组成如下…

自定义element-ui plus 函数式调用,在API,js中直接使用全局组件

npm方式: npm install -D unplugin-vue-components unplugin-auto-import yarn 方式 : yarn add unplugin-vue-components; yarn add unplugin-auto-import; 使用官方的这个: vite.config.js中配置 plugins: [vue(),AutoImport({resolvers: [ElementPlusResolve…

02-Sping事务实现之声明式事务基于XML的实现方式

声明式事务之XML实现方式 开发步骤 第一步: 引入AOP相关的aspectj依赖 <!--aspectj依赖--> <dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>6.0.0-M2</version> <…

docker安装(超详细)

一.引言 本安装教程参考Docker官方文档&#xff0c;地址如下&#xff1a;https://docs.docker.com/engine/install/centos/ 二.卸载旧版docker(第一次安装可忽略) 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker…

电脑投屏到TCL电视鼠标延迟

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 笔记本电脑使用HDMI投屏到TCL电视&#xff0c;页面显示正常但是鼠标延迟反应太慢了 解决方案&#xff1a; 提示&#xff1a;这里填写该问题的具体解决方案&#xff1a; TCL电视设置中选择图像 → 图像类型改…

Flink源码解析二之执行计划⽣成

JobManager Leader 选举 首先flink会依据配置获取RecoveryMode,RecoveryMode一共两两种:STANDALONE和ZOOKEEPER。 如果用户配置的是STANDALONE,会直接去配置中获取JobManager的地址如果用户配置的是ZOOKEEPER,flink会首先尝试连接zookeeper,利用zookeeper的leadder选举服务发现…

如何处理前端本地存储和缓存

前端本地存储和缓存的处理是一种重要的技术&#xff0c;它可以帮助改善应用程序的性能和用户体验。下面是一些处理前端本地存储和缓存的常用方法&#xff1a; 1. 使用Web Storage API&#xff1a; 这是一种在浏览器中存储数据的方法&#xff0c;包括两种类型&#xff1a;loca…

【漏洞复现】Django -SQL注入漏洞复现(CVE-2019-14234)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 复现环境&#xff1a;Vulhub 环境启动后&#xff0c;访问http://192.168.80.141:8000即可看到Django默认首页 漏洞复现 首先登陆后台http://192.168.80.141:8000/admin/&#xff0c;用…

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互&#xff0c;而前端框架的选择对于实现这些目标至关重要。然而&#xff0c;传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下&#xff0c;我们引入…

R语言 复习 习题图片

这是日天土申哥不知道从哪淘来的R语言复习知识点图片&#xff0c;大部分内容都是课后习题的答案 加油吧&#xff0c;骚年&#xff0c;考个好分数

注册电气工程师证书挂靠有风险吗?考试难度很高是吗?前景怎么样

一.先说证书挂靠问题&#xff0c;毫无疑问&#xff0c;有风险&#xff0c;远的不说咱说说近的&#xff0c; 比如下面这张图 从上面这张图可以看出来&#xff0c;哪怕是2023&#xff0c;还有陆陆续续的人因为挂靠的问题被处罚&#xff0c;所以我的建议是能不挂就不挂&#xff0c…

吴恩达《机器学习》5-6:向量化

在深度学习和数值计算中&#xff0c;效率和性能是至关重要的。一个有效的方法是使用向量化技术&#xff0c;它可以显著提高计算速度&#xff0c;减少代码的复杂性。接下来将介绍向量化的概念以及如何在不同编程语言和工具中应用它&#xff0c;包括 Octave、MATLAB、Python、Num…

python相关内容

官网下载&#xff0c;安装python&#xff0c;配置环境变量(可勾选) 要查看Python的版本&#xff0c;您可以打开终端&#xff08;命令提示符&#xff09;并输入以下命令&#xff1a; python -V这将显示您当前安装的Python的版本号。 要验证Python的环境变量是否配置成功&…

MySQL索引优化与查询优化

1. 索引失效案例 MySQL中提高性能的一个最有效的方式是对数据表设计合理的索引。索引提供了访问高效数据的方法&#xff0c;并且加快查询的速度&#xff0c;因此索引对查询的速度有着至关重要的影响。 使用索引可以快速地定位表中的某条记录&#xff0c;从而提高数据库查询的速…

虚幻常见的效果关闭方式

常见的虚幻效果关闭方式 1.Depth of Field PostProcessVolume->Lens->Depth of Field 2.Vignette PostProcessVolume->Lens->Image Effects->Vignette Intensity 3.Bloom Project Setting->Rendering->Default Settings->Bloom PostProcessVolume-&g…

电商API接口文档|1688API接口的接入获取获得1688商品详情it按关键字搜索商品 按图搜索1688商品(拍立淘)

API接口文档 前面讲到的关于接口的请求方式、类型、原理、安全机制等&#xff0c;产品经理能够简单了解一些就可以满足日常工作中的需要。接口文档是产品经理日常工作中经常会使用到的&#xff0c;特别是做开放平台或B端的产品经理&#xff0c;需要经常的看和写接口文档。 那如…

AI:63-基于Xception模型的服装分类

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

微信小程序案例3-1 比较数字

文章目录 一、运行效果二、知识储备&#xff08;一&#xff09;Page()函数&#xff08;二&#xff09;数据绑定&#xff08;三&#xff09;事件绑定&#xff08;四&#xff09;事件对象&#xff08;五&#xff09;this关键字&#xff08;六&#xff09;setData()方法&#xff0…

【排序算法】 快速排序(快排)!图解+实现详解!

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 算法—排序篇 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️快速排序的概念☁️快速排序的由来☁️快速排序的思想☁️快速排序的实…