• 如何爬取CSDN博客中分栏的所有文章的标题+链接


    如何爬取CSDN博客中分栏的所有文章的标题和链接
    今天在写一个自己博客的一个博客文章导航的文章,想把各个分栏的文章做一个汇总导航,前面几个分栏还好,文章不多,等到整理算法题目的文章的时候,瞬间就发现问题不对劲了,虽说写的时间不长,但是也有100篇左右的算法题了,这要是手写得写多久啊。这时候就想到能不能爬取一下自己分栏的文章标题和链接呢?
    为了严谨起见,博主还是先去看了下CSDN的robots.txt文件也就是爬虫协议,毕竟博主也不想牢底坐穿啊~~
    CSDN的爬虫协议如下:

    也就是说我们只爬取自己博客的文章标题和文章地址是没问题的。那么就说干就干了,直接上代码吧,很简单的一串代码,在代码里对一些功能进行了注释。

    import re
    import requests
    from bs4 import BeautifulSoup
    
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',
        # 网站Host
        'Host': 'blog.csdn.net'
    }
    
    # 网页链接
    link = 'https://blog.csdn.net/qq_43422111/category_8847039.html'
    
    # 获取网页
    r = requests.get(link, headers=headers, timeout=10)
    
    # 使用soup进行过滤
    soup = BeautifulSoup(r.text, "lxml")
    
    div_list = soup.find_all('li')
    
    articles = []
    for each in div_list:
        article = {}
        href = str(each.find('a').get('href')).strip()
        title = each.find('h2',class_ = "title")
        title = str(title)
        # 这里的title还需要进一步的处理,因为CSDN在这个h2标题下面还有两个注释:<!--####试读--><!--####试读-->这里用正则把注释去掉
        re_comment = re.compile('<!--[^>]*-->')
        title = re_comment.sub("",title)
        # 去掉注释之后我们在用正则来提取<h2></h2>之间的内容
        # 这里由于</h2>的标签在下一行,中间有个
    ,所里这里的结束标签设置为了
    ,大家可以根据实际情况进行修改
        # 这样最终的标题和链接就提取出来了
        title_re = re.findall(r'<h2 class="title">(.*?)
    ',title)
        # 发现这时标题后面还跟着一堆空格,我们把空格去除一下
        # 先把列表转换为字符串,然后使用字符串的strip()函数即可去除头尾的空格
        mid = "".join(title_re)
        title_f = mid.strip()
        article['href'] = href
        article['title'] = title_f
        articles.append(article)
    
    # 下面我们就来将处理好的这个articles列表按照Markdown本文超链接的格式保存到我们的文本中
    
    # 保存文件的地址
    mylog = open('/Users/qiguan/article.txt',mode='a',encoding='utf-8')
    
    for article in articles:
        # 这里我们在控制台也输出一遍
        print("[", article['title'], "]", "(", article['href'], ")",sep='', end='
    ')
        # 保存到文本中
        print("[",article['title'],"]","(",article['href'],")",sep='',end='
    ',file = mylog)

     这里是将数据打印到了控制台并且保存到了我们的文件中,这里只写了分专栏的进行爬取,但是用来写博客导航的完全够用啦

    ————————————————
    版权声明:本文为CSDN博主「亓官劼」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_43422111/article/details/105176018

    你有什么心态,就有什么样的人生。管不好自己的心态,注定你就是个弱者。
  • 相关阅读:
    CSUFT 1002 Robot Navigation
    CSUFT 1003 All Your Base
    Uva 1599 最佳路径
    Uva 10129 单词
    欧拉回路
    Uva 10305 给任务排序
    uva 816 Abbott的复仇
    Uva 1103 古代象形文字
    Uva 10118 免费糖果
    Uva 725 除法
  • 原文地址:https://www.cnblogs.com/LQZ888/p/12599355.html
Copyright © 2020-2023  润新知