学期:2021-2022学年第一学期

    学 院 大数据与智能工程学院 年 级、 专 业、 班 18级数据科学与大数据技术(专升本)一班 姓 名
    学号
    实验项目 名称 中国数据科学与大数据技术专业排名获取

    实验学时: 3h 同组学生姓名: 王美琴、尤博欣、周青青、李昕辰 实验地点: 9317
    实验日期: 实验成绩: 批改教师: 批改时间:
    指导教师评阅:

    1. 实验目的:编写程序,实现中国数据科学与大数据技术专业排名数据获取
    2. 实验原理:requests请求、BeautifulSoup库、bs4网页解析
    3. 实验环境 :win10、python3.9、vscode、edge
    4. 实验步骤:
      1. Requests网页请求,获取网页源代码
      2. 使用bs4语法解析网页数据
      3. 直接返回数据科学与大数据技术专业排名数据

    核心代码:

    1. import requests
    2. import bs4
    3. from bs4 import BeautifulSoup
    4. def getHTMLText(url):
    5. try:
    6. head = {'user-agent': 'Mozilla/5.0'}
    7. r = requests.get(url, headers=head)
    8. # print(r.status_code)
    9. r.encoding = r.apparent_encoding
    10. return r.text
    11. except:
    12. print('获取HTML失败')
    13. def fillUnivList(ulist, html):
    14. try:
    15. soup = BeautifulSoup(html, 'html.parser')
    16. for tr in soup.find('tbody').children:
    17. if isinstance(tr, bs4.element.Tag):
    18. tds = tr('td')
    19. ulist.append([tds[0].text.strip(), tds[1].text.strip(), tds[2].text.strip(), tds[3].text.strip(),tds[4].text.strip()])
    20. except:
    21. print('获取Ulist失败')
    22. def printUnivList(ulist, num):
    23. tplt = '{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}\t{4:^10}'
    24. for i in range(num):
    25. u = ulist[i]
    26. print(tplt.format(u[0], u[1], u[2], u[3],u[4],chr(12288)))
    27. def main():
    28. unifo = []
    29. url = 'http://www.creditsailing.com/article/1056511.html'
    30. html = getHTMLText(url)
    31. fillUnivList(unifo, html)
    32. printUnivList(unifo, 115 + 1) # 30 univs
    33. main()
    1. 实验结果及分析:

    通过requests库,并添加网页请求头,使用代理IP,请求网页url,得到网页数据源代码,并通过BeautifulSoup库使用bs4语法,进行数据整理提取,最后直接显示该数据。

    1. 实验总结:

    在进行网页爬取时,网站会存在一些反爬机制,如:是否添加请求头、IP访问是否超出网站限制等,在进行网站爬取时,需要注意网站的反爬机制,并使用相对应的反反爬,最终得到数据。