news 2026/8/15 4:24:05

爬虫救大命!手动收集数据太耗时,Python爬虫一键搞定

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
爬虫救大命!手动收集数据太耗时,Python爬虫一键搞定

引言:于我们的生活里头, 会碰到繁多的数据, 又或者是自身想看的照片, 亦或是电影评分, 还有部分商品比较。在这个当口, 要是我们依靠手动去收集, 那会耗费超多的时间, 以及精力。在这个时刻, 爬虫就在数据收集、分析等方面展现出了它的使用价值。并且本文会简要地讲述跟爬虫有关的知识。

一、爬虫入门:核心库与基础原理1.1 基础工具的了解

抓包, 对于爬虫而言, 就跟网络安全以及网络工程是同一类情况, 它可是一项绝对不能少的工作, 不过, 我们不是像在处理网络安全领域这般采用BP来抓包, 也未曾像在网络工程范畴那样去使用抓包方式, 一般来说, 利用一下浏览器所自带的抓包功能就行啦(这里推荐选用微软浏览器哟), 紧接着, 就要开始介绍一下抓包工具的使用办法, 首先要做的就是打开F12。

如图中圈出的所示,我们主要使用的是、、以及。

有人会误以为那等同于源代码, 事实并非如此, 要是想查看源代码, 就得运用鼠标右键进行代码检查, 就像图中所呈现的那样, 这种情况确实存在, 可实际上并非大家所想那样的源代码。

那就会有人发问了: 这两者之间存在着啥区别? 比如说以考试来做例子讲, 去查验源代码的话, 就类似于老师给出的卷子的那个标准答案, 然而却是由学霸自己书写出来的不算十分简洁明快的答案。可是,那是不是就意味着它是没什么用处的? 答案是不对的, 在一个仅仅只有代码的页面当中, 我们要是想寻觅到我们所需要的标签那是颇为困难的, 有时候就只能有借助其他方式去定位我们所需要的标签了。

这是一个起到调试作用的工作台, 它于爬虫里边可发挥的作用并非多么显著, 要是下文存在相应需求的话, 将会专门去进行阐述。

是存放了源代码的文件夹,可以查看其文件。

那么这是我们使用频率最高的, 应当留意让你开启这些选项, 在刷新之后会呈现出所有传输时的数据包, 有时我们所期望得到的就在此地。

1.2 基础库

引入库 .。即

from urllib.request import urlopen

接下来以百度为例,在库中引用方法:

url = "http://www.baidu.com" # 定义要访问的url resp = urlopen(url) # 打开url #print(resp.read().decode("utf-8")) # 读取响应内容并解码为utf-8,此时拿到的是源代码 with open("mybaidu.html",mode="w",encoding="utf-8") as f: # 打开文件,指定编码为utf-8 f.write(resp.read().decode("utf-8")) # 写入文件

最开始的时候, 我们必须要给出一个url, 告知爬虫我们打算前往哪里去爬取, 因而在此种情形下, 就要借助()方法来进行获取url。

而通过resp.read()获取得到的实际上是字节, 因而要借助解码的方式, 从而获取到我们能够读懂的源代码。然而解码所依据的码源针对不同网站是存在差异的, 所以在这个时候需要利用CTRL+F搜索“”这个单词来寻觅发觉所使用的码源, 百度所采用的是“UTF-8”。如图:

图一是未使用解码的效果,图二是使用了解码的效果。

把它于此处留存下来的这般行为没有历经我们操作, 所以为促使其得以留存下来, 我们借助了一种函数, 也就是“with open() as”。

文件读写,以后就用with open 语句。

with open("filename.txt",'r') as f: content = f.read(f) #文件的读操作

其中意思为保存文件类型为txt,以只读的方式打开文件。

with open("data.txt","w") as f: content = f.write("hello world") #文件的写操作

其中意思为保存文件类型为txt,以只用于写入的方式打开文件

故,对于我们想要保存的源代码,则需要用到如此语句

with open("mybaidu.html",mode="w",encoding="utf-8") as f: f.write(resp.read().decode("utf-8"))

这段代码段所表达的意思是, 把url对应的页面, 以utf - 8的形式进行解码, 然后写入到.html中, 并且进行保存。

不过要注意哦, 那个.库是自身自备的, 然而并不便于使用, 所以要置入崭新的库。此库得借助在终端键入pip去开展下载。待下载完毕之后就能够正常予以运用了。

import requests url = "http://www.baidu.com" resp = requests.get(url) #发送get请求体 resp.encoding = "utf-8" print(resp.txt) #拿到页面源代码

1.3 POST与GET请求1.3.1 POST请求

以百度翻译为例

import requests url = "https://fanyi.baidu.com/sug" #对于post无论url有多长都需要拿过来 data ={ "kw":input("请输入一个单词:") } rep = requests.post(url,data=data) #data为post请求的数据包参数 print(rep.text) #拿到的是文本字符串 print(rep.json()['data']) #此时拿到的直接是json数据

关于data那部分内容, 有人或许会质疑道, 它究竟处于何方呢? 我们于百度翻译之中输入dog(最终采用中文输入方式)。

实施抓包操作之后, 能够促使我们于 form data 当中寻觅到与之相对应的数据了, 具体情况以如下图所示作为呈现, 明白吧。

1.3.2 GET请求

以豆瓣为例:

import requests #get请求只需要提取问号前面的url url = "https://movie.douban.com/j/chart/top_list" data = { "type":"13", "interval_id":"100:90", "action":"", "start" :"0", "limit":"20" } header = { "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36" } resp = requests.get(url,params=data,headers=headers) #处理get请求数据包为params print(resp.text) print(resp.request.url) #查看url

在Get请求里面, 对于data部分而言, 它是Query , 处于跟POST请求相同的位置, 要留意一点, 如果只提取问号前面的URL, 而不是提取整个URL, 这是GET请求所需要的。

二、网页进行解析, 要从HTML里提取数据, 2.1是关于HTML与CSS, 2.1.1是HTML的基础语法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 4:19:44

《赛博朋克2077》DLC解锁补丁技术原理与安全实践指南

如果你在 Steam 或 Epic 平台购买了《赛博朋克 2077》的本体,却因为种种原因暂时无法体验其备受赞誉的 DLC《往日之影》,那么这篇文章就是为你准备的。我们不是在讨论任何绕过付费验证的非法行为,而是聚焦于一个在单机游戏玩家社区内被反复讨…

作者头像 李华
网站建设 2026/8/15 4:19:19

Excel序列值转日期时间:从原理到实战的完整指南

1. 从“数字”到“日期时间”:一个看似简单却暗藏玄机的操作如果你经常和数据打交道,尤其是在处理从各种系统导出的报表时,大概率会遇到过这种情况:打开一个Excel文件,发现一列本该是“2024-05-01 08:30”这样的日期时…

作者头像 李华
网站建设 2026/8/15 4:16:46

AI图像增强实战:超分辨率与降噪技术应用指南

1. 项目概述:从“能用”到“惊艳”的视觉升级利器 在内容创作、电商运营乃至日常社交分享中,我们总会遇到一个共同的痛点:手头的图片质量不尽如人意。可能是手机抓拍的照片噪点明显,可能是老照片扫描件模糊不清,也可能…

作者头像 李华
网站建设 2026/8/15 4:16:28

深入解析CAS与自旋锁:高并发场景下的无锁编程利器

1. 从一次诡异的并发计数错误说起那天下午,我盯着监控面板上一个持续跳动的计数器,心里咯噔一下。这是一个简单的用户在线状态统计服务,逻辑清晰:用户上线时,计数器加一,下线时减一。理论上,在任…

作者头像 李华
网站建设 2026/8/15 4:14:20

从迷茫到聚焦:财经学生如何构建个人成长系统与技能体系

1. 项目概述:一次关于成长与理想的深度复盘“眼里有光,心中有理想”,这十个字听起来像一句常见的励志口号,但当我真正坐下来,试图复盘自己从一名普通学生到如今在财经领域找到方向、并持续前行的这段旅程时&#xff0c…

作者头像 李华