博客信息

之前都是拿别人的网站练手,今天看着无聊的网课,就想爬一下自己的博客🙃

萌生这个想法的时候就想到了姬无命的经典台词:

一共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  技术