案例
import requests #如果报红,电脑控制台执行:python -m pip install requests,下载即可
from bs4 import BeautifulSoup
title=[] #所有文章标题
#因为需要爬取的数据,不单单存在一个页面,所以需要分析目标网站的URL规律,构造出每一页的URL,并逐个爬取
for page in range(4): #目标网页总页数
url = f'https://www.cnblogs.com/KeFeng/?page={page+1}' #目标网页,因为page是从0开始,但网页的第一页是从1开始,所以需要加1
response = requests.get(url) #发起一个GET请求
soup = BeautifulSoup(response.content, 'html.parser') #获取目标网页所有元素,目前跟我们按F12看见的内容一样
#开始解析
#使用find方法获取class为forFlow的标签,并使用find_all方法获取该div下的所有class为postTitle的div标签,也就是要爬取内容的标签
recent_list = soup.find('div', {'class': 'forFlow'}).find_all('div', {'class': 'postTitle'})
title.append(f'\n------------第{page+1}页数据-------------')
for recent in recent_list:
# 使用get_text()方法获取文本内容,也就是去除文本以外的内容
# 使用strip()方法去除字符串开头和结尾的空格(包括换行符,制表符等空白字符)
recent_title = recent.get_text().strip()
title.append(recent_title) #将解析完的内容添加到列表
# 循环输出爬取的内容
for t in title:
print(t)
#将爬取结果生成一个word文档
from docx import Document
document = Document() # 创建一个新的 Word 文档
# 将列表添加到文档中
for item in title:
document.add_paragraph(item, style='List Bullet')
document.save('爬取结果.docx') # 保存文档
注意
- 爬取过程需要网络