Python爬虫_大学专业排名

文章目录

  • 前言
  • 一、原网络
    • 1.原地址:
    • 2.爬取内容:
  • 二、编程
    • 1.编程思路
    • 2.编程
  • 三、完整代码:


前言

刚学中国大学MOOC(嵩天 北京理工大学)上的网络爬虫不久,想着如何加深课后理解,就去爬取中国大学自动化专业排名,写篇博客记录一下


提示:以下是本篇文章正文内容,下面内容供学习参考使用

一、原网络

1.原地址:

大学生必备网-控制科学与工程专业大学排名
https://www.dxsbb.com/news/7564.html

2.爬取内容:

爬取序号、学校代码、学校名称、评选结果
Python爬虫_大学专业排名_第1张图片

二、编程

1.编程思路

具体编程思路可查看嵩天老师的课程视频:

中国大学MOOC Python网络爬虫与信息提取
https://www.icourse163.org/course/BIT-1001870001

2.编程

大部分代码可参考原视频代码
fillUnivList()函数:

查看网络源代码
网络源代码
可以看到在父节点tbody下,每个tr包含一个大学的信息,每部分信息又由td组成

代码如下:

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()])
    except:
        print('获取Ulist失败')

三、完整代码:

'''
大学生必备网   https://www.dxsbb.com/news/7564.html
自动化专业大学排名  全国第四轮控制科学与工程学科评估结果
作者:腾格里   日期:2021年2月9日16:18:04
'''

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()])
    except:
        print('获取Ulist失败')

def printUnivList(ulist, num):
    tplt = '{0:^10}\t{1:^10}\t{2:^12}\t{3:^10}'
    for i in range(num):
        u = ulist[i]
        print(tplt.format(u[0],u[1],u[2],u[3],chr(12288)))
        
def main():
    unifo = []
    url = 'https://www.dxsbb.com/news/7564.html'
    html = getHTMLText(url)
    fillUnivList(unifo, html)
    printUnivList(unifo, 30+1)#30 univs
main()

输出效果:
Python爬虫_大学专业排名_第2张图片
本篇完:如有错误欢迎指出

你可能感兴趣的:(Python爬虫,python,爬虫)