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