zoukankan      html  css  js  c++  java
  • 利用requests和BeautifulSoup爬取菜鸟教程的代码与图片并保存为markdown格式

    还是设计模式的开卷考试,我想要多准备一点资料,于是写了个爬虫爬取代码与图片,有巧妙地进行格式化进一步处理,最终变为了markdown的格式

    import requests 
    from bs4 import BeautifulSoup
    

    首先获得菜鸟教程-工厂模式这个页面的html,转为soup对象

    r = requests.get("https://www.runoob.com/design-pattern/factory-pattern.html")
    #获取反馈信息 200为正常
    r.status_code
    r.encoding = "utf-8"
    soup=BeautifulSoup(r.text,'lxml')
    print(soup.prettify())
    

    通过观察可知需要爬取的链接都是以‘/design’开头的,所以利用startswith()筛选,得到url列表

    html_list=[]
    for a in soup.find_all('a'):
        if(a['href'].startswith('/design')):
            print(a['href'])
            html_list.append(a['href'])
    

    写一个爬取每个页面的函数,先将markdown语言放在注释中,注释用三条斜杠,方便格式化。

    +def fonepage(add):
        baseurl="https://www.runoob.com"
        url=baseurl+add
        r = requests.get(url)
        #获取反馈信息 200为正常
        r.status_code
        r.encoding = "utf-8"
        soup=BeautifulSoup(r.text,'lxml')
        lis=soup.find_all(attrs={'class':'example'})
        print('///## '+add)
        img=soup.find_all('img')
        print('///![]('+baseurl+img[0]['src']+')')
        print('///```')
        for son in lis:
            for a in son.find_all('span'):
                print(a.string,end=' ')
        print('
    ')
        print('///```')
    

    然后逐页爬取即可

    for i in range(2,len(html_list)):
        fonepage(html_list[i])
    

    最后进行加工,利用IDEA进行格式化,随后用notepad删除所有的'///'字符串,就转为markdown格式了。

    结果如下:https://www.cnblogs.com/Tony100K/p/11741212.html

  • 相关阅读:
    React 之使用 fetch
    react-native 环境搭建
    create-react-app 配置 less
    React新的前端思维方式
    字体图标 —— IconMoon
    你不知道的javascript 之 >>
    前端的自我修养
    jquery 学习
    html的meta总结
    git基本操作 nginx基本操作
  • 原文地址:https://www.cnblogs.com/Tony100K/p/11742333.html
Copyright © 2011-2022 走看看