博客信息
之前都是拿别人的网站练手,今天看着无聊的网课,就想爬一下自己的博客🙃
萌生这个想法的时候就想到了姬无命的经典台词:
一共24篇博客,每条记录都包括了时间、标题、副标题和标签
进入首页后,用检查工具查看标题、副标题、时间和标签所对应的html标签,以标题和副标题为例:
<section class="post-preview">
<a class="post-link" href="/2020/03/09/%E7%BD%91%E7%AB%99%E8%AE%BE%E7%BD%AE-%E8%B8%A9%E5%9D%91.html" title="阿里云ECS服务器部署"></a>
<h2 class="post-title">阿里云ECS服务器部署</h2>
<h3 class="post-subtitle">部署&踩坑</h3>
</section>
可以看到我们要找的内容分别为<h2>
和<h3>
标签的信息,所以利用下面的代码就可以爬取该页的标题和副标题,时间和标签的过程与此类似:
title_list = soup.find_all('section',class_='post-preview')#标题&副标题
for each in title_list:
title = each.h2.text.strip()
subtitle = each.h3.text.strip()
blog_tilte.append(title)
blog_subtitle.append(subtitle)
有的博客的标签不止一个,还是以这篇为例:
<div class="post-tags">
<a href=/tags.html#%E6%9C%8D%E5%8A%A1%E5%99%A8 class="post-tag">服务器</a>
<a href=/tags.html#%E7%BD%91%E7%AB%99 class="post-tag">网站</a>
<a href=/tags.html#%E5%9F%9F%E5%90%8D class="post-tag">域名</a>
</div>
一共有三个标签,如果我们爬取标签的话只会获得“服务器”这一个标签,两外两个则不会,所以直接爬取<div>
标签的文字就可以获得所有标签,但是还有一个问题,这样获得的内容是这样的:
服务器
网站
域名
这些标签是以回车结尾的,这样保存后不美观,所以我们用.replace()
函数将回车替换为空格,详细代码如下:
tag_list = soup.find_all('div',class_='post-tags')#标签
for each in tag_list:
tag = each.text.strip()
ag =tag.replace('\n',' ')#将回车替换为空格
blog_tag.append(tag)
代码
"""
爬取jmbaozi.top博客信息
时间:2020.3.10 12:46
"""
import requests
from bs4 import BeautifulSoup
import lxml
url = 'https://jmbaozi.top/'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.43 Safari/537.36 Edg/81.0.416.28'
}
blog_tilte = []#标题
blog_subtitle = []#副标题
blog_tag = []#标签
blog_time = []#时间
page_number = 4#博客页数
#获取信息
def get_data():
for i in range(1,page_number+1):
if i==1:
link = url
else:
link = url + 'page' + str(i)
r = requests.get(link,headers = headers)
soup = BeautifulSoup(r.text,'lxml')
title_list = soup.find_all('section',class_='post-preview')#标题&副标题
for each in title_list:
title = each.h2.text.strip()
subtitle = each.h3.text.strip()
blog_tilte.append(title)
blog_subtitle.append(subtitle)
tag_list = soup.find_all('div',class_='post-tags')#标签
for each in tag_list:
tag = each.text.strip()
tag =tag.replace('\n',' ')#将回车替换为空格
blog_tag.append(tag)
time_list = soup.find_all('time',class_='post-date')#时间
for each in time_list:
time = each.text.strip()
blog_time.append(time)
#写入信息
def write_data():
with open('blogArchive.txt','w',encoding = 'utf-8') as file:
for i in range(len(blog_tilte)):
file.write(blog_time[i]+': '+blog_tilte[i]+'---'+blog_subtitle[i]+' Tags: '+blog_tag[i])
file.write('\n\n')
if __name__ == '__main__':
get_data()
write_data()
print('写入完成!')
结果
09 Mar 2020: 阿里云ECS服务器部署---部署&踩坑 Tags: 服务器 网站 域名
08 Mar 2020: 物理-第2章习题---习题精炼 Tags: 物理 学习
03 Mar 2020: LeetCode刷题历程---菜鸟写BUG Tags: Python 技术 学习
03 Mar 2020: Github+jsDelivr+PicGo 打造稳定快速、高效免费图床---高速免费图床 Tags: 杂谈 图床
02 Mar 2020: 阿里云白嫖一年服务器---ECS服务器免费领 Tags: 杂谈 服务器
02 Mar 2020: 成果斗鱼直播截图(续)---属实拉跨 Tags: 成果 直播
01 Mar 2020: 物理-第1章习题---习题精炼 Tags: 物理 学习
28 Feb 2020: Python爬虫-爬取豆瓣电影TOP250---豆瓣电影 Tags: Python 技术
26 Feb 2020: 成果斗鱼直播截图---人人都是赵海棠&蓝战非 Tags: 成果 直播
25 Feb 2020: 英语四级-作文范文---范文汇总 Tags: 英语 四级 学习
24 Feb 2020: 物理-质点运动习题整理---习题整理 Tags: 物理 学习
22 Feb 2020: 英语四级-作文公式2---土味单词整改 Tags: 英语 四级 学习
21 Feb 2020: 英语四级-作文公式1---作文公式模块 Tags: 英语 四级 学习
19 Feb 2020: Python小游戏—贪吃蛇---贪吃蛇 Tags: Python 游戏
18 Feb 2020: 大地测量学基础2---大地测量控制网 Tags: 大地测量学 学习
17 Feb 2020: 人工智障推荐机制---人工智障 Tags: 杂谈 生活
16 Feb 2020: Python进程与线程---进程与线程 Tags: Python 技术
14 Feb 2020: 正则表达式基础---正则表达式 Tags: Python 技术
14 Feb 2020: Bilibili-处处吻---星爷处处吻 Tags: 视频 杂谈
13 Feb 2020: 大地测量学基础-1---大地测量 Tags: 大地测量学 学习
12 Feb 2020: 物理-质点运动的描述---质点运动习题 Tags: 物理 学习
11 Feb 2020: Blog搭建---搭建历程 Tags: 博客 杂谈
10 Feb 2020: 感谢---第一个博客 Tags: 杂谈
10 Feb 2020: Python爬虫-爬取静态网页图片---爬取妹子图网站 Tags: Python 技术