本文共 1428 字,大约阅读时间需要 4 分钟。
(仅适合教育目的爬取)从http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html获取大学排名,显示出来。
通过浏览器访问该网址,右击网页,查看获取信息。使用的解析方法有多种,一种使用BeautifulSoup库,一种使用正则表达式直接匹配出来。我们这里使用BeautifulSoup。
会发现主要内容在tbody下面,td对应值。清华大学北京市95.9100.097.90%373421.2981177109113771111875935222北京大学
import requestsimport bs4 #pip3 install Beautifulsoup4 from bs4 import BeautifulSoup def getHTMLTesxt(url): try: r = requests.get(url, timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding #防止中文乱码 return r.text except: return ""def fillUnivList(uList, html): soup = BeautifulSoup(html, "html.parser") for tr in soup.find('tbody').children: #1.先找到tbody标签 if isinstance(tr, bs4.element.Tag): #判断tr的类型是bs4.element.Tag tds = tr('td') #2.从该标签下查找,0对应排名,1对应学校,2对应地区,3对应总分 uList.append([tds[0].string, tds[1].string, tds[3].string])def printUnivList(uList, num): #tplt = "{:^10}\t{:^6}\t{:^10}" tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"#优化中文对齐1 print(tplt.format("排名", "学校名称", "总分", chr(12288))) for i in range(num): u = uList[i] print("{:^10}\t{:^10}\t{:^10}".format(u[0], u[1], u[2]))def main(): uInfo = [] url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html' html = getHTMLTesxt(url) fillUnivList(uInfo, html) printUnivList(uInfo, 20) print("-------------------")main()
转载地址:http://ruhpn.baihongyu.com/