Python爬虫入门 - 通过茅台脚本讲些爬虫知识,应用和价值

news2024/12/23 12:31:30

前言

前段时间抢茅台脚本非常火,它是 Python 脚本,加上刚好最近在学习 Python,我们准备通过这个脚本,来加深学习 Python。

抢茅台的脚本其实属于爬虫脚本的一类,它实现了模拟登陆,模拟访问并抓取数据。于是我们从爬虫开始来学习 Python 做项目。从这篇开始记录下爬虫相关的笔记和知识点。

正文

什么是爬虫

到底什么是爬虫?你可以理解为爬虫是互联网上的一只蜘蛛,如果遇到一些网络数据或资源,这只“蜘蛛”可以把这些数据和资源爬取下来。

官方地讲,爬虫是请求网站并提取数据的自动化程序。

使用茅台脚本来举例,脚本程序实现模拟登陆京东账号,保存登陆信息,也实现访问商品-茅台,并且帮你抢购商品,成功下订单等等。这类似于你打开京东网站登陆账号密码,浏览商品并下单的操作,脚本将这些操作都实现,形成一个自动化的程序。

在这里插入图片描述

爬虫分类

通用爬虫

通用网络爬虫是捜索引擎抓取系统(Baidu、Google、Yahoo 等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

比如你发布的网站,需要给搜索引擎(百度)爬取过,才能在对应的搜索引擎(baidu)上搜索到。

聚焦爬虫

聚焦爬虫,是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于: 聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。

抢购脚本就是这种“面向特定主题需求”的爬虫程序。而我们主要学习的也是这样的爬虫程序。

爬虫程序的工作模式

说实话,写爬虫程序最难的不是码代码,最难的要熟悉被爬网站的业务逻辑,了解网络请求的链接,需要的参数,反爬的处理等等。

对被爬网站的抓包分析我们后面再说,这里主要讲一般的爬虫程序的工作逻辑。
基本流程

发起请求:爬虫程序首先都会向目标链接发起请求,获取想要的数据。

比如抢购脚本,请求茅台链接的处理:

logger.info('访问商品的抢购连接...')
   headers = {
       'User-Agent': self.user_agent,
       'Host': 'marathon.jd.com',
       'Referer': 'https://item.jd.com/{}.html'.format(self.sku_id),
   }
   self.session.get(
       url=self.seckill_url.get(
           self.sku_id),
       headers=headers,
       allow_redirects=False)

发起请求前,需要组装好访问的 headers,目的是模拟浏览器访问。访问目标链接,还要带上必须的参数,比如商品 ID。

常用的请求方法是 GET 和 POST

  • GET: 参数一般放在链接上,我们在浏览器上输入链接访问,就是 GET 方法。
  • POST: 参数一般放在请求方法上,不会暴露,而且 POST 方法能携带的数据量比较大,比 GET方法安全。常用在登陆,下订单等敏感操作上。

获取相应内容:发起请求后,服务器那边会根据请求的参数,返回对应商品的数据。

比如我们打开茅台商品的页面,会有一个状态码

在这里插入图片描述

我们可以根据这个状态码来判断,是成功的还是失败的。

常见的状态码有以下几种:

200 成功响应
3xx:跳转使用
404:找不到资源
500以上:服务器错误

解析内容:我们拿到服务器返回的商品数据,可以提取响应的数据,但是需要怎么提取呢?

一般网站返回的数据有几种:

- json 格式的机构化数据

	```

{"code":0,"whwswswws":"jM92rBfD0JFPpdmhM5FyRAw==","openall":1,"openalltouch":1,"processtype":1}

	```

- HTML 数据

```

 <a target="blank" class="catemenu_lk" href="//channel.jd.com&#47;home.html">家居</a>

    <span class="catemenuline">/</span>

      <a target="blank" class="catemenu_lk" href="//channel.jd.com&#47;furniture.html">家具</a>

        <span class="catemenuline">/</span>

          <a target="blank" class="catemenu_lk" href="//jzjc.jd.com&#47;">家装</a>

             <span class="catemenuline">/</span>

 <a target="blank" class="catemenu_lk" href="//channel.jd.com&#47;kitchenware.html">厨具</a>

             </li>

 <li class="catemenuitem" data-index="5" clstag="h|keycount|head|category_05a">

```

- 图片,视频等二进制数据

我们需要根据不同的数据,做不一样的解析,这里最方便的是 json 数据,它是结构化的,容易解析。

不过网站一般都是返回 HTML 数据,我们就需要通过一些 Python 库来解析了。

一般解析的方法有几种:

1.直接处理,保存文本
2.json解析字符串,结构化处理
3.正则表达式,解析规则字符串,使用re库
4.beautifulsoup解析库,解析HTML数据的库
5.pyquery
6.xpath

爬虫的应用和价值

爬虫程序的应用和价值显而易见,可以自动抢购茅台。当然,你也可以写抢购各种优惠券,秒杀,高铁抢票等,女同学可以爬取你喜欢的文章,微博保存下来,男同学可以爬取各种妹子图保存下来。

有的人还会爬股票的数据,分析涨跌关系,制定模型,实现自动化炒股等。

对我们来说,能学会爬虫,相当于也熟悉了 python,可以自己写一写自动化的程序,减少很多重复的劳动,提高我们的工作效率,有更多时间做自己想做的事情。

最后

学习 Python,学习爬虫,可以帮助我们实现很多功能,大家有空可以一起学习,一起进步。

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

👉Python入门学习视频👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

👉Python学习礼包👈

包括:Python开发工具、Python热门电子书、Python100道练习题、Python爬虫&数据分析&人工智能&办公自动化等学习资料

在这里插入图片描述

👉Python实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

点击免费领取《CSDN大礼包》:Python入门到进阶资料 & 实战源码 & 兼职接单方法 安全链接免费领取

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

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

相关文章

chatgpt api调用方法指南

文章目录 python调用chatgpt api的方法获取api可以调用的模型各种任务代码示例文本分类任务文本生成&#xff08;补全&#xff09;任务多轮对话任务 机器翻译任务文本摘要任务信息抽取任务 本文主要介绍使用python调用chatgpt api的方法&#xff0c;并提供一些任务的代码样例&a…

2023年认证杯C题超详细思路配有实现代码

2023年认证杯初步解题思路 后续会更新思路对应的实现代码 问题一思路 数据预处理&#xff1a;首先&#xff0c;根据描述&#xff0c;你已经有了心电波形的功率谱密度数据。你可以将频率范围从0 Hz到180 Hz分成361个频率间隔为0.5 Hz的数据点。确保数据格式正确&#xff0c;并…

chatgpt赋能Python-python2虚拟环境

Python2虚拟环境——加强你的编程能力 Python是一种广泛应用于Web开发&#xff0c;数据科学和机器学习等领域的编程语言。但是&#xff0c;由于不同的应用程序需要使用不同的Python库和版本&#xff0c;因此在不同的项目之间切换时可能会出现问题。 Python虚拟环境可以帮助您解…

八股总结(五)java基础、集合、并发、JVM

文章目录 接口、类与继承java中创建对象有哪几种方式&#xff1f; 和equal区别是什么&#xff1f;hashCode()为什么重写equals方法必须重写hashcode方法?String为什么设计成不可变的&#xff1f;String&#xff0c;StringBuffer&#xff0c;StringBuilder的区别是什么&#xf…

2023年改版第七版PMBOK后的PMP到底考什么?出题依据是什么?

2023年改版第七版PMBOK后的PMP到底考什么&#xff1f;出题依据是什么&#xff1f; 自从PMBOK&#xff08;Project Management Body of Knowledge&#xff09;第一版于1987年发布以来&#xff0c;它已成为项目管理领域的标准参考。PMBOK指南是Project Management Institute&…

Python画图设置坐标轴数字的千位分隔符

目录 导入必要的库创建图形并设置坐标轴设置坐标轴的千位分隔符完整代码效果图 当使用Python进行绘图时&#xff0c;可以使用 Matplotlib库来设置坐标轴上的数字的千位分隔符。下面是一个完整的教程&#xff0c;其中包含代码示例。 导入必要的库 在开始编写代码之前&#xff…

Java学习平台系统的设计与实现

背景 本次设计任务是要设计一个学习平台&#xff0c;通过这个系统能够满足学习信息的管理及学生和教师的学习管理功能。系统的主要功能包括首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;课程信息管理&#xff0c;类型管理&#xff0c;作业信…

使用sqoop从Hive导出数据到MySQL

1、启动hadoop&#xff1a;start-all.sh。 2、启动mysql&#xff1a;support-files/mysql.server start。 3、启动hive&#xff1a;hive。 4、在hive中创建表。 &#xff08;学生信息&#xff1a;学号xh&#xff0c;姓名xm&#xff09;xsxx&#xff1a; create table bigda…

streamlit魔法使用

正常在学习一个新框架之前&#xff0c; 肯定要先调研下这个框架究竟能做些什么事吧&#xff1f; 但对于 streamlit 来说&#xff0c;请你相信我&#xff0c;这是一个你可以无脑去学习的框架&#xff0c;我之所以这么说&#xff0c;是因为我相信终有一天&#xff0c;你一定能用…

11. Mysql执行原理之索引合并详解

MySQL性能调优 1. Intersection合并1.1 情况一&#xff1a;等值匹配1.2 情况二&#xff1a;主键列可以是范围匹配 2. Union合并2.1 情况一&#xff1a;等值匹配2.2 情况二&#xff1a;主键列可以是范围匹配2.3 情况三&#xff1a;使用Intersection索引合并的搜索条件 3. Sort-U…

云厂商纷纷降价开启新一轮价格大战,行业竞争加剧未来何从?

5月16日晚间&#xff0c;腾讯云和移动云两大云服务商相继宣布对旗下多款核心产品进行降价。其中&#xff0c;腾讯云降价幅度最高达40%&#xff0c;移动云部分产品直降60%。 而就在20天前4月26日阿里云2023合作伙伴大会上&#xff0c;阿里巴巴CEO张勇率先宣布启动“史上最大规模…

服务(第二十五篇)redis的优化和持久化

持久化的功能&#xff1a;Redis是内存数据库&#xff0c;数据都是存储在内存中&#xff0c;为了避免服务器断电等原因导致Redis进程异常退出后数据的永久丢失&#xff0c;需要定期将Redis中的数据以某种形式&#xff08;数据或命令&#xff09;从内存保存到硬盘&#xff1b;当下…

win7虚拟机无法安装VMwaretools的处理办法(亲测有效!)

最近在学习中用到要安装win7系统&#xff0c;于是我在虚拟机里装了win7系统&#xff0c;但是却发现无法安装VMware tools&#xff0c;最后经多方查证&#xff0c;以下方法可解决&#xff01; 这里提示需要将原始win7升级到win7 SP1版本&#xff0c;可在控制面版——系统和安全…

ChatGPT应用场景巡航之会议纪要

今天我们拿昨天&#xff08;2023年5月17日&#xff09;腾讯发布2023年一季报会议来举例。 首先刚开篇Pony&#xff08;马化腾&#xff09;说的一段话来看下知否AI问答多场景中的会议纪要表现如何&#xff1a; 马化腾&#xff1a;谢谢你&#xff0c;温迪。晚上好。感谢您加入我…

macOS Monterey 12.6.6 (21G646) 正式版发布,ISO、IPSW、PKG 下载

macOS Monterey 12.6.6 (21G646) 正式版发布&#xff0c;ISO、IPSW、PKG 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持…

【QT 自研上位机 与 STM32F4xx下位机联调>>>can通信测试-基础样例-联合文章】

【QT 自研上位机 与 STM32F103下位机联调>>>通信测试-基础样例-联合文章】 1、概述2、实验环境3、联合文章&#xff08;1&#xff09;对于上位机&#xff0c;可以参照如下例子&#xff08;2&#xff09;对于下位机&#xff0c;可以参照如下例子 4、QT上位机部分第一步…

PCD235A101 3BHE032025R0101功能框图如何在 PLC 中工作?

​ PCD235A101 3BHE032025R0101功能框图如何在 PLC 中工作&#xff1f; ​ 表示功能块和逻辑门的图形编程语言称为功能块图 创建 PLC 时&#xff0c;逻辑门及其在集成逻辑电路中的应用已广为人知。使用专门的绘图应用程序&#xff0c;连接线用于连接功能块编程中的各种符号。…

国内版的ChatGPT模型分享

1、百度的【文心一言】注册地址&#xff1a;点我 这里我很早之前就申请了&#xff0c;所以当前时可以正常使用的&#xff0c;还没有体验的小伙伴&#xff0c;可以现在申请 虽然与ChatGPT还是有一些差距的&#xff0c;但是作为办公助手还是很OK的&#xff01;&#xff01; 而且有…

谷歌升级Find My Device服务,苹果Find My产品市场火爆

谷歌效仿苹果和 Tile 的定位追踪解决方案&#xff0c;在 I / O 2023 开发者大会上宣布升级 Find My Device 平台。 谷歌的 Sameer Samat 宣布&#xff0c;Find My Device 平台在“未来几个月内”支持追踪耳机、平板电脑和其他产品类别。更为重要的是&#xff0c;Find My Devi…

深度学习在图像识别方面的应用

前言 深度学习是一种非常强大的机器学习技术&#xff0c;它在许多领域都有广泛的应用。其中&#xff0c;图像识别是深度学习最成功的应用之一。本文将详细介绍深度学习在图像识别方面的应用。 图像识别的基本步骤 图像识别的基本步骤包括图像预处理、特征提取和分类器。图像预…