logo资料库

网络应用开发.doc

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
《网络应用开发》 中国大学排名定向爬虫 系 别: 专 业: 学 号: 姓 名: 报告日期: 年 月 日 目录
1. 大作业目的…………………………………………………… 1 2. 大作业内容……………………………………………………1 3. 需求分析………………………………………………………1 4. 实现思路………………………………………………………2 5. 详细实现………………………………………………………2 6. 源代码…………………………………………………………6 7. 运行结果………………………………………………………10 8. 大作业小结……………………………………………………13
正文小四、宋体,1.5 倍行距 一、 大作业目的 对所学知识融会贯通,能综合运用所学知识开发一款符合题目要求、具有 一定规模的爬虫。 二、 大作业内容 目标网址:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html 目标内容:如下图所示内容,包括排名,大学名称,总分。 (1)从网络上获取大学排名网页内容; (2)提取网页内容中信息; (3)把提取的信息保存为 CSV 格式; 三、 需求分析 需求:利用 Python 的 requests-bs4 的技术路线,定向爬取(仅对输 入的 URL 进行爬取)由上海交通大学设计的 2019 年‘最好大学网’中国大学排 名情况并输出并保存大学的排名,大学名称,总分到文件中。 分析: 实验的可行性是大前提,在该实验中,我们需要考虑两方面的可行性: ①确定我们想要爬取的信息内容确实被写在了该网页的 html 文件中; ②网络爬虫亦要盗亦有道,需查看网页是否提供了 Robots 协议; 具体操作如下: (1)访问网址,鼠标右键查看网页源代码; 1
(2)在源代码中查看是否有我们需要的信息,或者直接搜索清华大学查看 (因为大学排名一定有清华) (3)发现我们所需要的学校排名信息确实被写在 HTML 文件的 td 标签中, 满足第一个可行性 四、 实现思路 第一步:打开 PyCharm 建立 pycodes 文件 第二步:导入或者安装 bs4 库 requests 库,csv 库 第三步:从网络上获取大学排名网页内容 getHTMLText() 第三步:获取我们想要信息的 list fillUnivList(): 第四步:输出打印信息并调用保存函数 wcsv() 第五步:保存信息到文件里 第六步:改变大学的数量定义一个可输入函数 TK() 第七步:运行主函数 五、 详细实现 1.从网络上获取大学排名网页内容: getHTMLText() #网络爬虫有风险,为增强代码的可靠性,使用异常,如有异常返回空 - 2 -
2.提取网页内容中的信息,并找到合适的数据结构进行存储: fillUnivList(): (1). 利 用 BeautifulSoup 对 网 页 的 内 容 进 行 解 析 , 用 到 解 析 器 "html.parser"。 (2).观察网页的源代码(上有图),我们发现信息在以 ‘tbody’ 标签为 索引的’tr’标签下的’td’标签中,于是我们需要先在 html 文件中找到‘tbody’ 的孩子 ‘tr’,再找到 ‘td’,进而获取信息。 (3).这里需要对 ‘tr’ 进行一次判断,判断什么呢,判断我们找到的这 个 ‘tr’ 确实是标签,而不是字符串。这时需要引入 bs4 包! 3.利用数据结构展示并格式化输出我们想要的结果: printUnivList() 格式化输出用到 ‘format()’ 函数,利用循环输出的学校信息 - 3 -
4.保存文件 wcsv()导入 csv 库,进行文件保存 5.定义爬取前多少名的大学排名- 4 - TK():导入 tkinter 库实现一个可输入的框,然后把值赋给 count 列表 - 4 -
6.主程序调用: main()调用函数的实现 - 5 -
六、 源代码 import requests from bs4 import BeautifulSoup import bs4 import csv from tkinter import * import tkinter.messagebox as messagebox result_list=[] count=[] def getHTMLText(url):#获取网页内容 try: r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparent_encoding - 6 -
分享到:
收藏