20191108 实验四《Python程序设计》实验报告

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

课程:《Python程序设计》
班级: 1911
姓名: 朱家婧
学号:20191108
实验教师:王志强
实验日期:2020年5月21日
必修/选修: 公选课

1.实验内容:

使用Python进行网页内容爬取

3. 实验过程及结果

1.找到需要处理的网页,然后查看这个网页的源代码,观察需要的数据在哪个位置

2.在浏览器中查看当前网页的Html源码,我们找到每个主播的名字和视频的浏览量
比如:

3.编程实现获取Html标签里的数据,并将其重新整理后打印显示

from urllib import request   
import re                    
class Spider():
    #需要抓取的网络链接
    url = "https://www.panda.tv/cate/kingglory"
    reString_div = '<div class="video-info">([\s\S]*?)</div>'   
    #获取主播名
    reString_name = '</i>([\s\S]*?)</span>'
    #取视频浏览量
    reString_number = '<span class="video-number">([\s\S]*?)</span>'
    def __fetch_content(self):
        r = request.urlopen(Spider.url)
        data = r.read()
        htmlString = str(data,encoding="utf-8")
        return htmlString
    def __alalysis(self,htmlString):
        videoInfos = re.findall(Spider.reString_div,htmlString)
        anchors = []
        #print(videoInfos[0])
        for html in videoInfos :
            name = re.findall(Spider.reString_name,html)
            number = re.findall(Spider.reString_number,html)
            anchor = {"name":name,"number":number}
            anchors.append(anchor)
        #print(anchors[0])
        return anchors

    def __sort(self,anchors):
        #按浏览量从大到小排序
        anchors = sorted(anchors,key=self.__sort_seed,reverse = True)
        return anchors
    def __sort_seed(self,anchor):
        list_nums = re.findall('\d*',anchor["number"])
        number = float(list_nums[0])
        if '万' in anchor["number"]:
            number = number * 10000
        return number

    def __show(self,anchors):
        #打印数据
        for rank in range(0,len(anchors)):
            print("第" + str(rank+1) +"名 " + anchors[rank]["number"] + "\t"  + anchors[rank]["name"])

    def startRun(self):
       #运行程序入口
       htmlString = self.__fetch_content()
       anchors = self.__alalysis(htmlString)
       anchors = self.__refine(anchors)
       anchors  = self.__sort(anchors)
       self.__show(anchors)

#爬取数据
spider = Spider()
spider.startRun()

结果:

参考资料

附码云链接:

实验四

课程感悟:

在整学期Python课程的学习过程中,困扰最多的不是程序代码是设计和实践,而是各种安装和配置的问题,从一开始安装Python和Pycharm,到后来git怎么也成功不了,到最后socket的配置怎么也不成功,一路坎坷,而因为疫情不能当面请教老师又给解决这些问题带来了更大的麻烦。所以,我最深的感悟是,自我学习的能力很重要,很多问题别人是解决不了的,只有靠自己摸索;然后就是不能放弃,有写东西你今天做不成,不妨放一放,但不是放弃,应该明天再拿出来做,只要有空就去做,做成为止。

posted @ 2020-06-14 10:08  191108  阅读(187)  评论(0编辑  收藏