1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

python爬取个人博客园博客列表

前言

昨天和几个小伙伴小聚了一下,但是由于我的失误,导致诸事不顺(逛公园,到门口闭园了;往回走,公交站不好找,走了好多冤枉路),然后手机没电了,地铁还停了,回到家也已经不早了,所以昨天就放鸽子了,但是今天呢,不能再继续鸽了,然后我就打算分享了轻松的内容,于是就有了今天的内容。

安装配置python

这里我们简单介绍下python的安装配置,原本是不打算讲的,但是我看了下,之前我好像也没有分享过,所以这里就简单说下,也是帮助那些没有python基础的小伙伴,能够尽快上手。

下载安装

安装版本这里推荐3.0及以上,我这里安装的是3.92.7虽然也可以,但是不推荐,官方推荐的也是3.0版本。这两种版本在很多函数和写法上并不通用,所以代码也不通用,有兴趣的小伙伴可以看下区别,这里我不打算展开分享。

安装方式有很多,用win10的小伙伴可以直接在应用商店搜索安装,但这里并不推荐这种方式,因为这种方式不好找python安装路径,特别是对windows平台不是特别熟悉的小伙伴:

另外一种安装方式就是官网下载,然后安装:

官方最新版本是3.10,如果觉得官方网站下载慢的话,可以去华为镜像站下载,选择对应的版本即可(华为好像没有3.10版本的):

https://repo.huaweicloud.com/python/

安装过程很简单,这里就不讲了,双击exe,然后一直下一步就好了。

配置

安装完成后,我们需要对python设置一些环境变量。首先,打开python安装路径,如果不知到可以搜下python,然后打开文件路径即可:

打开之后其实还不是安装位置,还需要再次右键打开安装路径:

然后才是真正的安装路径(我这里就是在应用市场下载的,看这路径是不是不好找):

然后打开环境变量设置,添加两个环境变量设置:

# 安装目录,也就是python.exe所在路径
C:\Users\syske\AppData\Local\Programs\Python\Python39 
# 安装目录下scripts路径,这个目录下存放了pip等管理工具
C:\Users\syske\AppData\Local\Programs\Python\Python39\Scripts

这里需要注意的是,环境变量要设置在系统变量的path下面,否则如果是用户变量则无法被识别(也可能是我操作方式不对,但是系统变量肯定是可以的):

验证

安装完成后,重新打开一个新的cmd窗口,输入python命令,如果显示如下在,则表明已经安装配置完成,否则配置有问题:

然后再执行了经典的hello world试下:

当然,还需要测试下pip是否配置ok,这个工具是用了管理python的依赖库的:

至此,python环境搭建完成。

爬取博客列表

准备工作

这里主要是安装我们爬虫要依赖的第三方依赖库。

安装requests库,这个库的作用是向我们的目标地址发送请求,并拿到响应内容,比如html内容

 pip install requests

安装beautifulsoup4库,这个库的作用就是解析响应的html内容。目前我也仅用它来解析html内容,所以其他内容暂时未知

pip install beautifulsoup4

安装lxml库,这个库是bs4库(也就是我们的soup库要依赖的)

pip install lxml

如果没有这个库,在解析html的时候会报如下错误

最终完成效果

简单来说,就是我们想通过这个爬虫,拿到我的个人博客的所有列表,包括标题和链接地址,这里我是直接生成了一个markdown文档,所以链接的效果就是markdown的可点击链接,最终的效果如下:

页面源码

首先我们要先分析要抓取的页面html,确定具体解析方案:

从页面源码可以看出来,我们其实只需要拿到classpostTitlediv,然后解析其中的文字内容及a标签的url即可,所以下面的实现就是基于这个思路展开的。

实现过程

下面我们看下具体的爬取代码。其实整个代码确实很简单,当然这也是很多人喜欢用python写脚本的原因,简简单单几行代码,就可以实现其他语言整个项目的功能(比如java,当然性能上python没有任何优势),真的是生产力提升利器。

这里最核心的一句代码是:

for tag in soup.find_all('div', class_='postTitle'):

再精简一下是:

soup.find_all('div', class_='postTitle')

也就是soupfind_all,从soup的文档中,我们可以得知,通过这个方法我们可以拿到soup下的相关tag对象。这个方法有四个参数:

  • name 参数可以查找所有名字为 nametag,字符串对象会被自动忽略掉。例如:soup.find_all('div'
  • attrs :可以通过属性搜索,例如:soup.find_all('div', class_='postTitle')
  • recursive:这个暂时没用到,还没研究
  • string :没研究
  • keywords:包括关键字的内容,也没研究

关于soup可以小伙伴可以去详细看下文档,我也没有搞得特别清楚,所以暂时就先不说了。

然后下面就是完整的实现过程了:

# 引入 requests库
import requests;
# 从bs4库中引入BeautifulSoup
from bs4 import BeautifulSoup;
# 引入正则表达式依赖
import re;
# 引入文件相关依赖
import os;
# 全局变量,主要是为了生成序号,方法内部最后一个赋值很重要,没有这个赋值,会导致序号不连续
global index;

# 定义了一个方法,这个方法就是为了循环遍历我的博客,文件就是我们要保存的文件
def get_blog_list(page, index, file):
  # 通过requests发送请求,这里用到了字符串的格式化
  r = requests.get('https://www.cnblogs.com/caoleiCoding/default.html?page={}'.format(page));
  # 打印返回结果
  print(r.text);
  # 用soup库解析html,如果没有安装lxml库,会报错
  soup = BeautifulSoup(r.text,'lxml');
  
  # 搜索class属性为postTitle的div
  for tag in soup.find_all('div', class_='postTitle'):
    print(tag);
    # tag的span标签的内容
    content = tag.span.contents;
    # 过滤掉置顶内容,这块的结构和其他内容不一样,匹配需要写正则,太复杂,所以先忽略掉
    if index == 0 and page == 1:
      index += 1;
      continue;
    print(content)
    # 获取span的内容,也就是文本内容
    title = next(tag.span.children)
    print(str(title));
    # 替换其中的换行符和空格
    title = title.replace('\n', '').strip();
    print(title);
    # 获取tag下的a标签的href,也就是我们的博客地址
    url = tag.a['href']
    print(tag.a['href']);
    # 通过字符串格式化写入解析的内容
    file.write('{}. [{}]({})\n'.format(index, title, url));
    # 序号自增
    index += 1;
    # 给全局变量赋值
    inedx = index;
    
if __name__ == "__main__":
  # 初始化全局变量
  index = 0;
  # 定义我们的markdwon文件,模式为写,如果没有的话,会新增
  file = open('syske-blog-list.md', 'w')
  # 我现在的包括是60页,这里是循环获取
  for page in range(59):
    get_blog_list(page + 1, index, file);

总结

今天我们就是对python脚本爬虫的一次简单应用演示,当然也希望能通过这个示例激发各位小伙伴学习python的兴趣,毕竟它也算是一个比较高效的生产力工具,如果学的好了,你可以用它来处理日常工作中的各类问题,包括数据统计、数据处理、批量业务处理,还有像今天这样简单抓取数据,当然,你如果学的好了,你可以用它做任何事,抢票呀、下载短视频,甚至是爬取小电影、小姐姐图片等。

好了,今天的内容就到这里吧,再晚点今天就发不出去了,各位小伙伴,晚安吧!

posted @ 2021-10-23 22:29  云中志  阅读(87)  评论(0编辑  收藏  举报