其他
第十八次课加讲了一个爬取整部红楼梦的代码
import requests
from bs4 import BeautifulSoup#第十七次课:数据清洗
#红楼梦小说网址:https://www.gdwxcn.com/gdxs/hlm/
xs=''#爬取整部红楼梦
for i in range(2164,2044,-1):
url = 'https://www.gdwxcn.com/gdxs/hlm/'+str(i)+'.html' # 设置爬取红楼梦第一回
hd = {"User-agent": "*"} # 设置请求方式
r = requests.get(url,headers=hd)#向服务器发送请求
print('网页返回的编码:',r.encoding)#网页返回的编码方式
#编码方式:ISO-8859-1、utf-8、gbk,出现乱码才解码,根据返回的编码进行编码解码
r = r.text.encode('ISO-8859-1').decode('gbk', 'ignore') # 编码解码
#print(r)
soup = BeautifulSoup(r, "html.parser")
print(soup.title.text)#可以直接输出标签标题内容
t=soup.select('p')#清洗指定标签的数据
for r in t:
xs+=r.text+'\n'
with open('红楼梦.txt', 'w', encoding='utf-8')as f: # 输出并保存到记事本文件中
print(xs)#控制台输出
f.write(xs)#写入文本文件
#ftp://172.16.20.46 2117 交程序+词云图的图片
学生提交的是他们自己爬取的小说的词云图,为什么我还要爬整部红楼梦呢?是因为整部红楼梦才符合学生的认知,他们都知道宝玉才是红楼梦的主要人物,所以整部红楼梦的分析词云图更有说服力。
在讲解这个代码时,有个别学生跟着改写自己的程序,并且出现了各种问题来问我,这一点是比较头疼的,不过我还是将这个代码简单地跟学生讲解了一下。让学生知道我们不是一次只爬一个网页,而是可以一次爬很多个网页。
以下为学生提交的词云图: