python爬虫实战小项目

article/2025/9/12 7:18:09

本文所讲的爬虫实战属于基础、入门级别,使用的是python2.7实现的。


爬虫原理和思想

本项目实现的基本目标:在捧腹网中,把搞笑的图片都爬下来,注意不需要爬取头像的图片,同时,将图片命好名放在当前的img文件中。

爬虫原理和思想

爬虫,就是从网页中爬取自己所需要的东西,如文字、图片、视频等,这样,我们就需要读取网页,然后获取网页源代码,然后从源代码中用正则表达式进行匹配,最后把匹配成功的信息存入相关文档中。这就是爬虫的简单原理。

思想步骤:
读取网页并获取源代码,使用urllib.urlopen().read() ——> 使用正则表达式进行匹配,匹配图片的名称re.compile() re.findall() ——> 匹配图片地址——>将匹配的信息下载保存 urllib.urlretrieve()


爬虫涉及到额度基本知识

1 导入库/模块

import urllib ,re ,sys

注:该项目使用的是python的自带库,不需要另外下载

2 urllib.urlopen()的使用

该代码是用于读取网页

exp:

使用urllib.urlopen()打开捧腹网



使用read()读取,如网站比较庞大,也可以使用readline()按行读取



3 re.compile()和re.findall()

re.complie()的作用是把正则表达式编译成正则表达式对象,使其运行更有效率

re.findall()的作用是匹配信息,输入的是字符串,返回的是列表


爬虫实战

爬虫原理,思想,基本知识都理解以后,就开始实战了!

首先,编写打开网页并获取源码的函数page()

此处,编写函数,并测试其功能:



测试结果:



显然,成功获取网页源码。然后,编写匹配图片名称的函数。



注意:这里需要匹配到h1标签和a标签!当然这里使用的是懒惰匹配。
同理可得,同样需要匹配图片



最后,需要把匹配好的信息下载保存



注:本人在该项目目录下,新建了一个文件夹img

把以上函数相结合,编写主程序,爬去1-6页的图片



最后,运行程序,





成功爬取图片!

程序成功运行后,本人感觉只是爬取静态图不够过瘾,感觉捧腹网的动图才比较有趣,所以尝试修改程序。

修改的地方有两个,一个是content()函数中的匹配,一个是download()函数的保存文件格式


测试结果:




测试成功,成功将gif文件下载


http://chatgpt.dhexx.cn/article/ZRLqX0nB.shtml

相关文章

django项目实战基于Python实现的电影推荐系统

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Python项目介绍 资料获取 Python项目介绍 计算机毕业设计python毕设项目之django电影推荐系统-IT实战课堂_哔哩哔哩_bilibili计算机毕业设计python毕设项目之django电影推荐系统-IT实战…

给缺少Python项目实战经验的人

我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用到实际…

Python项目实战 —— 淘宝用户行为分析

Python项目实战 Python项目实战 —— 0淘宝用户行为分析 一、背景 本数据集共有大约1200万条数据,数据为淘宝APP2014年11月18日至2014年12月18日的用户行为数据,字段分别是:user_id用户身份(已脱敏)、item_id商品ID(已脱敏)、behavior_type…

Python实战小项目

不是很稀饭《复联》嘛,看了《复联4》,就用50行Python代码做了这些: 视频展示:50行代码玩转《复仇者联盟》 教程地址:图片转字符画 相关教程地址:视频转字符动画 当然,这个仅仅是初学者的一个…

手把手教导实战Python Web项目

手把手教导实战Python Web项目 一、前言 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很…

Python web开发之flask项目实战总结

在线问答系统 Flask Web开发项目介绍功能描述一、前端设计二、数据库设计三、页面功能开发1.用户模块2.问答模块 四、总结 Flask Web开发 请求到响应 用户通过浏览器访问url,会发送请求到服务器,服务器接收请求后会根据url规则找到对应的视图函数进…

Python必学的4个实战项目,拿走不谢

最近遇到了一些比较经典的实战项目,比较适合零基础的小白以及基础较薄弱的小伙伴。想了想,我决定把它分享给大家。 Python是一种极具可读性和通用性的编程语言。Python这个名字的灵感来自于英国喜剧团体Monty Python,它的开发团队有一个重要的…

菜鸟进阶高手, 推荐 7 个 Python 上手实战项目

作为一个语法简洁、有着丰富的第三方库的编程语言,Python 上手极为简单,短时间内就可以让你编写出能够解决实际问题的小程序,甚至去面试初级 Python 工程师的职位。 不过,如果要写出一些更复杂的应用,或者想从事数据分…

比金典还经典——4个python项目实战

写在前面的一些P话: Python是一种极具可读性和通用性的编程语言。Python这个名字的灵感来自于英国喜剧团体Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣。Python易于设置,并且是用相对直接的风格来编…

Python项目实战 4.1:账号登录

目录 一、用户名登录 二、多账号登录 三、首页用户名展示 四、退出登录 五、判断用户是否登录 一、用户名登录 1. 用户名登录逻辑分析 2. 用户名登录接口设计 1. 请求方式 选项方案请求方法POST请求地址/login/ 2. 请求参数:表单 参数名类型是否必传说明usern…

Python爬虫实战

文章目录 1. 引言2. 页面分析2.1 页面元素分析2.2 分页分析2.3 页面详情页面2.4 下载链接 3. 代码3.1 数据库结构3.2 步骤3.2.1 根据url获取页面结构3.2.2 解析页面数据3.2.3 数据存入数据库 4. 测试结果5. 完整代码 1. 引言 注:勿用于非法用途。 之前学习过Pytho…

insert into

7.insert into 如果我们想向表格中插入数据,就需要用到insert into语句了 7.1 insert into语法 INSERT INTO 表名 VALUES (值1, 值2,....) (注:插入一行数据) INSERT INTO 表名 (列名, 列名…

LaTeX: Missing } or { inserted. ^^I\For

报错 分析 可以发现,报错提示缺少{,但第306行并没有问题,并不缺少大括号。 这种情况下,很有可能是前面某个公式处出现了大括号缺失,建议从头到尾查找一遍。 修改 往前排查后发现某一处缺少大括号,如下所…

sqlserver触发器的使用以及inserted和deleted详解

背景:最近在项目中有需求是当人员表中有变动时(比如:增加人员、修改人员信息、删除人员信息)需要把这张表中的变动的信息同步到它对应的日志表中。那么如果用代码写逻辑的话在执行效率上会比较慢,正好sqlserver提供了触…

insert和insertSelective区别

使用逆向工程生成的代码做一个添加时通常都会给出两个答案&#xff0c;如题目想要增加一条数据会让你选择insert或者insertSelective 两者的区别在于如果选择insert 那么所有的字段都会添加一遍即使没有值 <insert id"insert" parameterType"com.ego.pojo.Tb…

Inserted和Deleted在insert、update、delete的简单使用

Inserted和Deleted在insert、update、delete的简单使用 Inserted表和Deleted表,仅仅在触发器运行时存在。当insert、update、delete操作时&#xff0c;可使用借助两个表来输出&#xff08;使用OUTPUT关键字&#xff09;操作前后的数据的变化。 Insert Update Delete Insert…

定义自定义指令;inserted()、update()

自定义指令的意义&#xff1a;对普通DOM元素进行底层操作&#xff1b; 作用 &#xff1a;可以获取到底层的dom&#xff0c;拿到想要的节点&#xff0c;从而进行操作&#xff1b; 实际应用&#xff1a;可以通过指令知道什么时候dom创建完成&#xff0c;从而进行依赖dom的库的初…

29.VUE自定义指令directive和inserted

VUE自定义指令directive和inserted 1.什么事自定义指令1.2使用自定义指令的方式 2.设置自定义组件2.1 设置全局指令2.2 设置私有指令2.3 钩子函数3. 案例 1.什么事自定义指令 指令 (Directives) 是带有 v- 前缀的特殊特性。指令特性的值预期是单个 JavaScript 表达式 (v-for 例…

echarts中x轴 y轴配置(字体颜色,线的颜色,分割线,y周单位颜色)。vue中直接使用echarts以及vue中使用vue-echarts如何配置横向渐变与纵向渐变(后者适用于前者)

vue中直接使用echarts //var myChart this.$echarts.init(document.getElementById("echart-twoline")); //vue var myChart echarts.init(document.getElementById("echart-twoline"));//jquery var option {backgroundColor: "#323a5e",…

Echarts折线图X轴Y轴图例位置调整

当X轴数据过多时Echarts会默认显示一半 如下图只显示奇数月份 Echarts加入axisLabel然后将interval设置为0就会将横轴全部显示 看一下效果 但是信息太多,看起来黏在了一起,我们可以让它-30度角倾斜显示 同样在axisLabel将rotate设置为-30,再看一下效果 这下都显示出来的,但…