学期:2021-2022学年第一学期
| 学 院 | 大数据与智能工程学院 | 年 级、 专 业、 班 | 18级数据科学与大数据技术(专升本)一班 | 姓 名 | 学号 | ||
|---|---|---|---|---|---|---|---|
| 实验项目 名称 | 中国数据科学与大数据技术专业排名获取 |
实验学时: 3h 同组学生姓名: 王美琴、尤博欣、周青青、李昕辰 实验地点: 9317
实验日期: 实验成绩: 批改教师: 批改时间:
指导教师评阅:
- 实验目的:编写程序,实现中国数据科学与大数据技术专业排名数据获取
- 实验原理:requests请求、BeautifulSoup库、bs4网页解析
- 实验环境 :win10、python3.9、vscode、edge
- 实验步骤:
- Requests网页请求,获取网页源代码
- 使用bs4语法解析网页数据
- 直接返回数据科学与大数据技术专业排名数据
核心代码:
import requestsimport bs4from bs4 import BeautifulSoupdef getHTMLText(url):try:head = {'user-agent': 'Mozilla/5.0'}r = requests.get(url, headers=head)# print(r.status_code)r.encoding = r.apparent_encodingreturn r.textexcept:print('获取HTML失败')def fillUnivList(ulist, html):try: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].text.strip(), tds[1].text.strip(), tds[2].text.strip(), tds[3].text.strip(),tds[4].text.strip()])except:print('获取Ulist失败')def printUnivList(ulist, num):tplt = '{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}\t{4:^10}'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():unifo = []url = 'http://www.creditsailing.com/article/1056511.html'html = getHTMLText(url)fillUnivList(unifo, html)printUnivList(unifo, 115 + 1) # 30 univsmain()
- 实验结果及分析:
通过requests库,并添加网页请求头,使用代理IP,请求网页url,得到网页数据源代码,并通过BeautifulSoup库使用bs4语法,进行数据整理提取,最后直接显示该数据。
- 实验总结:
在进行网页爬取时,网站会存在一些反爬机制,如:是否添加请求头、IP访问是否超出网站限制等,在进行网站爬取时,需要注意网站的反爬机制,并使用相对应的反反爬,最终得到数据。
