20193207 2019-2020-2 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 1932
姓名: 倪思涵
学号:20193207
实验教师:王志强
实验日期:2020年6月12日
必修/选修: 公选课

1.实验内容

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
实验要求
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分

2. 实验过程及结果

1.分析网站信息,找出headers,编写出代码,并且对得到的内容进行处理,得到小说的文本内容

2.找出小说网址的规律性,来达到连续获取章节内容


这边可以注意到,每过一章,网址后面的数字就加一,可以利用这一点并结合正则表达式来完成一个对网站的连续读取

 header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'}
 req = requests.get('https://www.52bqg.com/book_126955/%d.html' % i,
                  headers=header)
  1. 将爬取到的小说内容输出为txt文本文件,并保存在桌面

4.程序代码托管到码云。https://gitee.com/ni_si_han/pa/blob/master/pa.py

  • 程序代码:
import threading
from bs4 import BeautifulSoup
import re
import os.path
import time

for i in range(48632245,48632255):
 header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'}
 req = requests.get('https://www.52bqg.com/book_126955/%d.html' % i,
                  headers=header)
 result = req.content
 result = result.decode('gbk')
 title_re = re.compile(r'<h1>(.*?)</h1>')
 text_re = re.compile(r'&nbsp;&nbsp;&nbsp;&nbsp;([\s\S]*?) ')
 title = re.findall(title_re,result)
 text = re.findall(text_re,result)

 count = i - 48632244
 file = open("C:\\Users\\86150\\Desktop\\小说\\第%d章.txt" % count,'a')
 for sentence in text:
   sentence = sentence.replace('<br', '')
   file.write(sentence)
   file.write('\n')
 path = os.walk("C:\\Users\\86150\\Desktop\\小说\\第%d章.txt" % count)
 file.close()
 file = file = open("C:\\Users\\86150\\Desktop\\小说\\第%d章.txt" % count,'r')
 print("第%d章下载完毕" % count)

  • 运行结果:


3. 实验过程中遇到的问题和解决过程

  • 问题1:运行时涉及到很多环境,总是会出现缺少安装的现象,运用pip安装发现失败
  • 问题1解决方案:参考资料,将pip加入了系统的环境变量,最终使pip install能够顺利运行
  • 问题2:对正则表达式的具体内容不清楚
  • 问题2解决方案:翻阅了课程的相关资料

其他(感悟、思考等)

这次是python的最后一次实验,也是给我带来极大震撼的实验,从一开始对爬虫的一窍不通到经过了不断学习之后,能自己敲出爬虫代码,找到headers,获取小说内容的时候,我感到了一种极大的成就感,也让我看到了自己爬虫技术提高的可能性。比较可惜的就是这次想尝试运用QT制作UI界面,但在数据的输入输出方面仍没有解决问题,因此转手决定运用文件的输入输出来打成内容的可视化,也是一种无奈之举。但这也给我接下来想要学习QT带来了极大的动力。
总的来说,这次实验,收获颇丰。人生苦短,我用python。

参考资料

posted @ 2020-06-12 17:12  20193207倪思涵  阅读(131)  评论(0编辑  收藏