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和第三方库来从网页抓取信息,并进行简单的数据处理和展示。在实际应用中,可能还需要考虑反爬虫策略、数据清洗、更复杂的数据分析和可视化等环节。