帮小姐姐写个爬虫,赢得她请我喝下午茶

2023-11-24 14:10

本文主要是介绍帮小姐姐写个爬虫,赢得她请我喝下午茶,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小姐姐的请求

不知道大家是否关注到,我的文章经常在csdn的华为云博客中进行转载,没办法人缘好,认识她们运营的小姐姐啊!但是前几天她和我说到了一个自己的困扰。领导让她每周统计一次华为云发布的所有文章数据,包括类型(原创/转载)、标题、链接、访问量、评论数。

听起来就够麻烦了,等我登陆csdn看到他们居然收录了1600多篇文章的时候,更懵逼了...小姐姐问Python能否获取数据,那还用说当然OK了。刚好周末在家看了下csdn的网站结构,觉得蛮简单的梳理了下思路,写了些片段的代码。

今天,小姐姐突然说要请我喝下午茶,原来是领导又催她统计csdn数据了。


作为从小扶老奶奶过马路的新时代活雷锋,这个下午茶 ,不, 这个忙我肯定要帮的啊!之前已经准备了一些代码片段,重新梳理思路、优化逻辑,不到半小时就整理了一份excel数据。然后你懂得,当然是下午茶喽...不贪心,一杯瑞幸纳瑞冰,哈哈!

下面就来说说代码的实现过程吧...

CSDN网站分析

首先,每个用户都有一个自己的主页,比如我的CSDN地址:https://blog.csdn.net/BreezePython

其实平时都是在简书上写文章的,然后csdn使用博客搬家功能自动从简书同步。个人还是比较喜欢简书的书写风格,但没办法谁让小姐姐他们领导要搞csdn呢。盘它就完了!进入首页后,我们拖动到底部会看到第几页第几页的数字,我们随便选择后面的页码,跳转后我们的url变成了下面这样:https://blog.csdn.net/BreezePython/article/list/2

这逻辑简直不要太简单,非常适合新手们用作爬虫练习。我们只需要for循环构造页码,然后一页一页的爬下去就好了。那么什么时候结束呢?当你的url获取页码后展示如下,就可以根据返回内容结束代码了,是不是so easy!


html解析

为什么说csdn比较适合Python新手学习爬虫呢,让我们再来通过他的页面结构了解下,如下图:


看清楚就会发现,csdn的网站结构清晰明了。我们只需要分别获取每一页的url后定位到article-list,然后遍历每一个article-item-box。在每一个栅格栏内部标注的位置,获取到对应的数据即可!这里唯一有一点麻烦的是

<a href="https://blog.csdn.net/BreezePython/article/details/101475346" target="_blank"><span class="article-type type-1 float-none">原创</span>“     Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署     ”
</a>

往常我们获取a标签的内容,直接使用a.text即可,但在a标签内部又设计到一个span标签,直接获取会得到一下结果:

原创    “     Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署     ”

想使用什么child、next等方式都是无法实现仅获取标题内容的,所以可以尝试先获取文章类型,然后清空span标签,这样就可以得到最终的标题内容了,代码如下:

article_type = article.a.span.text
article_url = article.a["href"]
article_span = article.a.find_all('span')
for i in article_span:i.clear()

分析完成,我们先跑一边代码,看看能否获取到所需数据,得到如下结果:


数据没问题了,那怎么保存呢?当然是excel了!

Python保存excel

python操作excel的库很多,之前专门总结过一波:

Python操作Excel 模块,你猜哪家强?

个人比较中意的是openpyxl,具体的操作就不在这赘述了,来看看最后的统计效果:


以为这样就结束了?怎么可能...

打包可执行文件

既然喝了小姐姐的下午茶,总不能每周统计的时候,都敲诈一波小姐姐吧。可是代码发给她,她一不会python、二没有环境,这可如何是好?那么,我们为什么不尝试去把代码打包成windows下的可执行文件呢?又到了我最喜欢的Python打包模块Pyinstaller出场的时间了,不了解的看这里:

Python打包工具--Pyinstaller详细介绍

既然我们只要随便输入一个用户的首页url,就能全篇爬取他的文章内容,我们就来做一个简单的GUI功能吧:



最后我们只需要将它打包成exe工具,脱离环境直接运行即可!


有些朋友说打包的exe工具很大,因为pyinstaller在打包时,会把可能依赖到的库全部打进去,经过我多年验证,你可以单独创建一个venv,只安装你需要的几个模块这样打包会很小。对比下图是我使用主python环境和虚拟环境打包后的大小,可见一斑啊!

好了,今天的文章就到这里,代码太长就不在文章中占篇幅了,如需获取代码和exe工具,可以在公众号清风Python后台回复:csdn,即可获取代码下载链接。

ps:求助,最近没更新因为电脑坏了,周末打算去买个笔记本,个人不喜欢mac,目前备选列表如下:

  1. 华为matebook 14

  2. magicbook pro

  3. 惠普战66

  4. 联想小新air 14

  5. 戴尔灵越5000 都是十代i7 16G内存 max250/350 512ssd的配置。

平时不玩游戏比较关心的是笔记本的质量和售后,大家有好的意见欢迎下方留言指点迷津,谢谢。

这篇关于帮小姐姐写个爬虫,赢得她请我喝下午茶的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/422087

相关文章

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

Golang 网络爬虫框架gocolly/colly(五)

gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goquery就显得捉襟见肘了。解决方法有很多种: 一,最笨拙但有效的方法是字符串处理,go语言string底层对应字节数组,复制任何长度的字符串的开销都很低廉,搜索性能比较高; 二,利用正则表达式,要提取的数据往往有明显的特征,所以正则表达式写起来比较简单,不必非常严谨; 三,使

Golang网络爬虫框架gocolly/colly(四)

爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、

Golang网络爬虫框架gocolly/colly(三)

熟悉了《Golang 网络爬虫框架gocolly/colly 一》和《Golang 网络爬虫框架gocolly/colly 二》之后就可以在网络上爬取大部分数据了。本文接下来将爬取中证指数有限公司提供的行业市盈率。(http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio) 定义数据结构体: type Zhj

014.Python爬虫系列_解析练习

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头 urllib的底层原理伪装自己的爬虫-设置代理爬虫coo

Python 爬虫入门 - 基础数据采集

Python网络爬虫是一种强大且灵活的工具,用于从互联网上自动化地获取和处理数据。无论你是数据科学家、市场分析师,还是一个想要深入了解互联网数据的开发者,掌握网络爬虫技术都将为你打开一扇通向丰富数据资源的大门。 在本教程中,我们将从基本概念入手,逐步深入了解如何构建和优化网络爬虫,涵盖从发送请求、解析网页结构到保存数据的全过程,并讨论如何应对常见的反爬虫机制。通过本教程,你将能够构建有效的网络爬

0基础学习爬虫系列:网页内容爬取

1.背景 今天我们来实现,监控网站最新数据爬虫。 在信息爆炸的年代,能够有一个爬虫帮你,将你感兴趣的最新消息推送给你,能够帮你节约非常多时间,同时确保不会miss重要信息。 爬虫应用场景: 应用场景主要功能数据来源示例使用目的搜索引擎优化 (SEO)分析关键词密度、外部链接质量等网站元数据、链接提升网站在搜索引擎中的排名市场研究收集竞品信息、价格比较电商网站、行业报告制定更有效的市场策略舆情

0基础学习爬虫系列:程序打包部署

1.目标 将已经写好的python代码,打包独立部署或运营。 2. 环境准备 1)通义千问 :https://tongyi.aliyun.com/qianwen 2)0基础学习爬虫系列–网页内容爬取:https://blog.csdn.net/qq_36918149/article/details/141998185?spm=1001.2014.3001.5502 3. 步骤 1)不知道