课程:《Python程序设计》
班级: 1941
姓名: 向海飞
学号:20194123
实验教师:王志强
实验日期:2020年6月13日
必修/选修: 公选课html
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
选择:爬虫python
须要用到 bs4 、正则表达式、requests 的知识
找到网址http://zuihaodaxue.cn/ARWU2015.html
正则表达式
如图知数据块是 tbody,分析得html 中一行对应一个tr,世界排名、国家排名、总分能够直接经过 tr[‘td’] 得到,而学校须要经过 tr[‘td’].a.string 得到,国家/地区须要经过 tr[‘td’].a[‘title’] 得到
过程以下:
导入相关库:安全
import requests
from bs4 import BeautifulSoup
import bs4网络
获取网页数据app
ef getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""机器学习
解析网络数据函数
ef fillUnivList(ulist, html):
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find('tbody').children:
if isinstance(tr, bs4.element.Tag):
tds = tr('td')
ulist.append([ tds[0].string, tds[1].a.string, tds[2].a['title'], tds[3].string, tds[4].string ])学习
显示数据ui
def printUnivList(ulist, num):
tplt = "{0:10}\t{1:44}\t{2:16}\t{3:16}\t{4:^16}"
print(tplt.format("世界排名", "学校名称", "国家/地区", "国家排名", "总分"), chr(12288))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0], u[1], u[2], u[3], u[4]), chr(12288))
def main():
uinfo = []
url = 'http://zuihaodaxue.cn/ARWU2015.html'
html = getHTMLText(url)
fillUnivList(uinfo, html)
printUnivList(uinfo, 80) # 20 univs
if name == 'main':
main()
结果以下图:
学习python已经有一学期了,我在本学期中学会了python的语言基础,流程控制语句,其中for和while循环是最让我花时间得,,后来得序列,函数都还好,但到了面向对象程序设计后就有些跟不上了。说实话对我来讲有些困难,我本来觉得我就算一时间不会的话也能够多花时间练习,但后来逐渐发现本身一天的课和做业下来就没多长时间了,因此我学习python主要是在周三上课的时候,有时周末也会找云班课学习一下。虽然有不少知识点都没有很搞懂,但总的来讲,这学期收获仍是不少的,由于之前选的文科,总以为本身也应该尝试新的领域,因此学习python也算是得偿所愿吧。