利用requests和BeautifulSoup爬取菜鸟教程的代码与图片并保存为markdown格式

2023-05-12,,

还是设计模式的开卷考试,我想要多准备一点资料,于是写了个爬虫爬取代码与图片,有巧妙地进行格式化进一步处理,最终变为了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('\n')
print('///```')

然后逐页爬取即可

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

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

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

利用requests和BeautifulSoup爬取菜鸟教程的代码与图片并保存为markdown格式的相关教程结束。

《利用requests和BeautifulSoup爬取菜鸟教程的代码与图片并保存为markdown格式.doc》

下载本文的Word格式文档,以方便收藏与打印。