爬虫的一些小技巧总结

一、在爬虫中,爬取的数据类型如下
1.document:返回的是一个HTML文档
2.png:无损的图片,jpg:压缩后的图片,wbep:有损压缩,比png差,比jpg好
3.avg+xml图像编码字符串
4.script:脚本文件,依据一定格式编写的可执行的文件
5.gif:图像交换格式
6.xhr:返回的是json数据类型,在没有刷新整个网页的情况下,更新部分网页,也称Ajax请求
7.包后缀是css意味着其是css样式
二、
1.几个快捷进入开发者工具的指令: 
打开开发者工具方法:F12(键盘)/fn+f12/ctrl+shift+i
2.列表转字符串方法:
str.join(列表)
如'\n'.join(selector.css('.noveContent p ::text').getall())
3.files = os.listdir(filename)  # 获取文件夹下所有的小视频
with zipfile.ZipFile(filename+title+'.mp4',mode='w') as z:
        z.write(content)
 4.print(response.text)后,在下方,按住ctrl+f键可以搜索如下图
d5f2ced75a854b12b8564d70ce546d1a.png
 点击:95f411d26699418e886e3e4c8dafd339.png
点击.*可以用正则表达式,如果用正则表达解析数据,可以在这里尝试,可以看见匹配的数量,然后再写入代码中。
5.列表中嵌套元祖,如何快速找出元祖中的元素。
如:a=[(1,'as'),(2,'ajsh'),(781,'ajhsasa')]
04c07180d44744c2851321ae0209ac72.png
bcedd1fe514e49479e0f1f9bd71140da.png
用第二张图的方法,可以直接取出元素
6.遇到参数很多,加冒号很麻烦怎么办,如下图:
 6656f636412e4384804666a55d2423f1.png
 首先选中代码,按ctrl+r出现下图:72f08f93e4f0487ea429ac78243182a8.png
点击·*进入正则,写入下图:2611a7dd0a3f4c328900561e1ad14d5d.png 
代码是: (.*?): (.*)
'$1': '$2',
点击replaceall
结果展现:ce9bfcd0941b41519cee4857aba9985b.png

服务器端通常在接收 POST 请求时,根据请求头中的 Content-Type 字段来判断请求体的格式。如果 Content-Type 设置为 application/json,则服务器端会期望接收 JSON 格式的请求体数据。这在前后端分离的 Web 应用中比较常见,因为前端通常使用 JavaScript 或其他语言发送 JSON 格式的数据给后端。

以下是一些常见的情况,服务器端可能会要求 JSON 格式的请求体:

RESTful API: 许多基于 REST 架构的 Web 服务要求客户端发送 JSON 格式的数据给服务器端,以便执行 CRUD(创建、读取、更新、删除)操作。

前后端分离应用: 在前后端分离的应用中,前端通常发送 JSON 格式的数据给后端,后端再根据接收到的 JSON 数据进行处理。

某些框架或库要求: 某些后端框架或库可能要求客户端发送 JSON 格式的数据给服务器端,以便与服务器端进行交互。

Webhooks: 一些 Webhooks 可能要求发送 JSON 格式的数据给指定的 URL,以便触发某些操作。

在这些情况下,客户端通常需要将数据序列化为 JSON 格式,并将 Content-Type 设置为 application/json,以便服务器端能够正确解析请求体中的数据 

服务器端通常在接收 POST 请求时,根据请求头中的 Content-Type 字段来判断请求体的格式。如果 Content-Type 设置为 application/x-www-form-urlencoded 或 multipart/form-data,则服务器端会期望接收表单格式的请求体数据。

以下是一些常见的情况,服务器端可能会要求表单格式的请求体:

传统 Web 表单提交: 在传统的 Web 应用中,用户通过 HTML 表单提交数据给服务器端时,通常使用表单格式的请求体数据。

文件上传: 当表单中包含文件上传字段时,通常使用 multipart/form-data 格式提交请求体数据。

某些框架或库要求: 某些后端框架或库可能要求客户端以表单格式提交数据给服务器端,以便与服务器端进行交互。

部分 API 接口: 一些 API 接口可能要求客户端以表单格式提交数据,而不是 JSON 格式,这取决于接口的设计和需求。

在这些情况下,客户端通常需要将数据编码为表单格式,并将 Content-Type 设置为 application/x-www-form-urlencoded 或 multipart/form-data,以便服务器端能够正确解析请求体中的数据。

二、视频类爬虫总结
爬取短视频类型的数据一般步骤:
1.点击media,刷新,播放一个视频,会刷新一个包,点击发现是播放视频的包,
2.复制这个包url中的关键字,在搜索框中进行搜索,看有哪些包有关键字。
3.搜索后找到有play_url的包
4.看这个包的url,观察有什么规律
5.以糖豆视频为例,发现这个包的url有参数vid
6.查找参数在哪个位置
7.在xhr 动态加载中找到包,发现其中json数据中有vid的数据。
8.访问xhr 中的包获取vid数据,利用获取到的vid数据拼凑含有play_url的包的链接,访问这个链接,获取play_url
9.多页爬取,观察xhr 包的链接有什么规律,发现参数为页数,即可多页爬取
注意:访问视频play_url时,爬取短视频类型,headers中把user-agent,cookie,refer全部加上
爬取长视频的一般步骤:长视频通常以m3u8的格式存在,找包的过程与上述一致,找的是ts格式的文件,但一般存在于xhr下面。小技巧,若通过参数找不到就直接搜索m3u8,说不定可以找到终极目标是找到一个包能返回下面的界面

不同的网站,这个包找的地方不同,A站中搜索就可以找到,腾讯视频则先要找到一个含m3u8的包,从里面提取出一个链接,再访问这个链接,得到上面的界面。 
下载时,要下载为ts的视频格式,多的一步是将文件合成。
可以将多个ts包合成一个下载代码:
  with open('斗罗大陆.mp4',mode='ab') as f:f.write(ts_content)
三、打包exe与制表库的使用
 1.制表模块使用prettytable
from prettytable import PrettyTable
tb = PrettyTable()      # 实例化一个对象
tb.field_names = ['序号','歌手','歌名'] # 设置字段名
tb.add_row([num,singer,song_name]) # 写入表格行

2. 将python文件打包成exe文件
首先,在项目中下载pyinstaller包pip install pyinstaller
然后在需要打包的python文件目录路径下输入cmd

在终端输入:pyinstaller -F 文件名.py
成功后会出现dit的文件夹,里面有exe的文件 

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

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

相关文章

【大厂AI课学习笔记NO.58】(11)混淆矩阵

混淆矩阵(confusion matrix)—— 混淆矩阵(Confusion Matrix)是人工智能领域,特别是在机器学习和深度学习中,用于衡量分类模型性能的重要工具。它通过统计分类模型的真实分类与预测分类之间的结果&#xf…

【python debug】python常见编译问题解决方法_2

序言 记录python使用过程中碰到的一些问题及其解决方法上一篇:python常见编译问题解决方法_1 1. PermissionError: [Errno 13] Permission denied: ‘/lostfound’ 修改前: 修改后(解决): 此外,可能文件夹…

leetcode 热题 100_接雨水

题解一: 按列求:分别考虑每一列的雨水高度,某列的雨水高度只与其左侧最高墙和右侧最高墙有关,一种情况是该列比左右侧的墙都低,则根据木桶效应该列雨水高度为min(左侧墙高,右侧墙高)-列高,而其余…

智能驾驶及相关零部件摄像头毫米波雷达激光雷达和芯片渗透率

一、总体情况 乘联会数据显示,1月1日至1月28日,全国乘用车厂商新能源车批发销量为56.7万辆,同比增长76%,环比下降38%;国内新能源车市场零售销量为59.6万辆,同比增长92%,环比下降24%。 二、销…

【word】引用文献如何标注右上角

一、在Word文档中引用文献并标注在右上角的具体步骤如下 1、将光标移动到需要添加文献标注的位置: 2、在文档上方的工具栏中选择“引用”选项: 3、点击“插入脚注”或“插入尾注”: ①如果选择的是脚注,则脚注区域会出现在本页的…

多路转接之epoll

常用的三个API: epoll_create(); //例如 int epfd epoll(10);创建一棵有10个结点的红黑树,注意:这个数只是对内核建议的数值,内核参照这个参数去构建epoll_ctrl();//参数2 op可以取值 EPOLL_CTL_ADD/MOD/DELevents:EPOLLIN/…

Pyglet图形界面版2048游戏——详尽实现教程(上)

目录 Pyglet图形界面版2048游戏 一、色块展示 二、绘制标题 三、方阵色块 四、界面布局 五、键鼠操作 Pyglet图形界面版2048游戏 一、色块展示 准备好游戏数字的背景颜色,如以下12种: COLOR ((206, 194, 180, 255), (237, 229, 218, 255), (23…

SpringCloud负载均衡源码解析 | 带你从表层一步步剖析Ribbon组件如何实现负载均衡功能

目录 1、负载均衡原理 2、源码分析 2.1、LoadBalanced 2.2、LoadBalancerClient 2.3、RibbonAutoConfiguration 2.4、LoadBalancerAutoConfiguration 2.5、LoadBalancerIntercepor⭐ 2.6、再回LoadBalancerClient 2.7、RibbonLoadBalancerClient 2.7.1、DynamicServe…

OpenCV 4基础篇| OpenCV图像的拼接

目录 1. Numpy (np.hstack,np.vstack)1.1 注意事项1.2 代码示例 2. matplotlib2.1 注意事项2.2 代码示例 3. 扩展示例:多张小图合并成一张大图4. 总结 1. Numpy (np.hstack,np.vstack) 语法结构: retval np.hstack(tup) # 水平…

c++之通讯录管理系统

1,系统需求 通讯录是一个记录亲人,好友信息的工具 系统中需要实现的功能如下: 1,添加联系人:向通讯录中添加新人,信息包括(姓名,性别,年龄,联系电话&#…

构建高效的接口自动化测试框架思路

在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选择哪种框架,重要的是确保 框架功能完备,易于维护和扩展,提高测试效率和准确性。今…

信息安全技术第1章——信息网络安全基本概念

课程介绍 网络信息安全是医学信息工程专业的限选课。主要围绕计算机网络安全所涉及的主要问题进行讲解,内容包括:对称密码与公钥密码的基本原理、相关算法及应用。电子邮件的安全,IP安全,Web安全,恶意软件及防火墙等内…

C++ opencv 学习

文章目录 1、创建窗口2、读取图片3、视频采集4、Mat的使用5、异或操作6、通道分离,通道合并7、色彩空间转换8、最大值、最小值9、绘制图像10、多边形绘制11、随机数12、鼠标实时绘制矩形13、归一化14、resize操作15、旋转翻转16、视频操作17、模糊操作18、高斯模糊操…

SpringBoot整合MyBatis实现增删改查

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容: SpringBoot整合MyBatis实现增删改查 📚个人知识库: Leo知识库,欢迎大家访…

Java进阶-IO(1)

进入java IO部分的学习,首先学习IO基础,内容如下。需要了解流的概念、分类还有其他一些如集合与文件的转换,字符编码问题等,这次先学到字节流的读写数据,剩余下次学完。 一、IO基础 1、背景 1.1 数据存储问题 变量…

代码随想录day11(1)字符串:反转字符串中的单词 (leetcode151)

题目要求:给定一个字符串,将其中单词顺序反转,且每个单词之间有且仅有一个空格。 思路:因为本题没有限制空间复杂度,所以首先想到的是用split直接分割单词,然后将单词倒叙相加。 但如果想让空间复杂度为O…

芯来科技发布最新NI系列内核,NI900矢量宽度可达512/1024位

参考:芯来科技发布最新NI系列内核,NI900矢量宽度可达512/1024位 (qq.com) 本土RISC-V CPU IP领军企业——芯来科技正式发布首款针对人工智能应用的专用处理器产品线Nuclei Intelligence(NI)系列,以及NI系列的第一款AI专用RISC-V处理器CPU IP…

网络爬虫部分应掌握的重要知识点

目录 一、预备知识1、Web基本工作原理2、网络爬虫的Robots协议 二、爬取网页1、请求服务器并获取网页2、查看服务器端响应的状态码3、输出网页内容 三、使用BeautifulSoup定位网页元素1、首先需要导入BeautifulSoup库2、使用find/find_all函数查找所需的标签元素 四、获取元素的…

基于springboot+vue的健身房管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

●139.单词拆分 ● 关于多重背包,你该了解这些! ●背包问题总结篇!

●139.单词拆分 物品:wordDict里面的单词;背包容量:s.size()。 1.dp[j]含义。dp[j]true表示字符串前j个可以拆分成字典中的单词。dp[s.size()] 就是最后的结果,整个字符串能(true)不能(false…