v1.0 import requests import bs4 from bs4 import BeautifulSoup # 获取大学排名网页内容 def getHTMLText(url): try: headers = {'user-agent': 'Mozilla/5.0'} r = requests.get(url, timeout=30, headers=headers) #请求URL超时,产生超时异常 r.raise_for_status() #如果转态不是200,引发HTTPError错误 r.encodin 【知识点详解】 本文档涉及到的是一个使用Python编程语言编写的脚本,用于抓取和处理中国大学排名的数据。主要涉及的技术点包括网络爬虫、BeautifulSoup库以及数据的存储和展示。 1. **网络爬虫基础**:网络爬虫是自动化获取网页内容的一种程序。在代码中,`requests.get()` 函数用于向指定URL(在这个例子中是"http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html")发送HTTP GET请求,获取网页的HTML内容。`headers` 参数设置为模拟浏览器行为的用户代理,防止被网站识别为机器人并阻断访问。`timeout` 参数设定请求超时时间,防止因网络问题导致程序无限等待。 2. **HTTP状态码处理**:`r.raise_for_status()` 是用来检查HTTP响应的状态码,如果状态码不是200(表示请求成功),则会抛出HTTPError异常。 3. **编码处理**:在获取网页内容后,通过`r.apparent_encoding` 来获取网页的实际编码,然后设置`r.encoding` 以正确解码非ASCII字符。 4. **BeautifulSoup库**:这是一个用于解析HTML和XML文档的Python库。`BeautifulSoup(html, "html.parser")` 创建一个解析器对象,用于遍历和解析HTML文档。`find('tbody').children` 用于找到HTML表格的主体部分(tbody元素)的所有子元素。 5. **数据提取**:`isinstance(tr, bs4.element.Tag)` 判断当前元素是否为标签,如果是,则进一步提取`td` 标签内的数据。`tds[0].string, tds[1].string, tds[2].string, tds[3].string` 分别代表表格中的四列数据(排名、学校名称、省份、总分),并将它们添加到列表`ulist` 中。 6. **数据展示**:`printUnivList` 函数用于格式化并打印数据。使用了字符串格式化技术,其中`^10` 表示居中对齐且宽度为10,`chr(12288)` 是全角空格,使列与列之间保持一致的间隔。 7. **版本控制**:脚本有两个版本(v1.0和v2.0)。虽然看起来两者完全相同,但通常版本号的更新可能意味着在其他未显示的部分有修改或优化,如错误修复、性能提升或功能增加。 8. **数据保存**:虽然没有在提供的代码片段中完整显示,但`sav` 函数的引入暗示了数据可能被保存到文件中,这可能是为了持久化数据或进行后续分析。 9. **Python编程**:整个脚本展示了Python的基本语法,包括函数定义、异常处理、列表操作以及字符串格式化,这些都是Python编程的基础。 这个脚本可以作为初学者学习网络爬虫和数据分析的实例,它演示了如何使用Python和第三方库来从网页抓取信息,并进行简单的数据处理和展示。在实际应用中,可能还需要考虑反爬虫策略、数据清洗、更复杂的数据分析和可视化等环节。
- 粉丝: 6
- 资源: 910
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助