(参考)爬虫5-爬取中国大学排名情况

最好大学网

2018大学排名

功能描述:

输入:大学排名url链接

输出:大学排名信息的屏幕输出(排名,大学名称,总分)

技术路线:requests库和bs4库

定向爬虫:仅对输入的URL进行爬取,不扩展爬取

步骤:

1、输入url网址,查看源代码,发现信息都在HTML文件中

2、打开http://www.zuihaodaxue.cn/robots.txt,发现:not found,说明没有对爬取进行robots协议限制,可以进行爬取

3、程序的结构设计:

  步骤1,从网络上获取大学排名网页内容,getHTMLText()

  步骤2、提取网页内容中信息到合适的数据结构,fillUnivList()

  步骤3、利用数据结构展示并输出结果,printUnivList()

代码:

import requests
from bs4 import BeautifulSoup
import bs4#为了使用bs4的标签函数
#获取页面信息
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return ‘‘
#将数据存到list中
def fillUnivList(ulist,html):
    soup=BeautifulSoup(html,‘html.parser‘)
    #查看HTML源码发现每一所大学都在tbody标签中,这里一个tr表示一所大学
    for tr in soup.find(‘tbody‘).children:
        if isinstance(tr,bs4.element.Tag):#判断是否为标签类型,过滤掉字符串
            tds=tr(‘td‘)
            ulist.append([tds[0].string,tds[1].string,tds[2].string])
    #pass
#将num个list中的数据打印显示出来,可视化输出
def printUnivList(ulist,num):
    #打印表头
    print(‘{:^10}\t{:^6}\t{:^10}‘.format(‘排名‘,‘学校名称‘,‘总分‘))
    for i in range(num):
        u=ulist[i]
        print(‘{:^10}\t{:^6}\t{:^10}‘.format(u[0],u[1],u[2]))
    #print(‘Suc‘+str(num))
#主函数
def main():
    uinfo=[]#待放入数据的列表
    url=‘http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html‘
    html=getHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivList(uinfo,20)#打印20组数据
main()

结果展示:

以上程序有一个问题,就是总分一栏输出的竟然是省份,这其实是这一行代码的问题:

ulist.append([tds[0].string,tds[1].string,tds[2].string])
#这里应该改为
#ulist.append([tds[0].string,tds[1].string,tds[3].string])

更改后就没有问题了。

在这里我们的设计思路是:

先搭建程序的框架,先定义三个函数名,然后定义主函数,主函数会依次调用三个函数,然后再分别充实三个子函数,一步步的写,这是写程序的正确方法。

当遇到bug时,我们可以逐步排查,比如先运行第一个程序,看看是否已经获得html文件,再逐步检查。

代码优化:

  format属性

  中文对齐的问题:

<填充> <对齐> <宽度> , <精度> <类型>

引号

符号


用于填充

的单个字符


<左对齐

>右对齐

^居中对齐


槽的设定

输出宽度


数字的千位

分隔符适用

于整数和浮点数


浮点数小数部分

的精度或字符串

的最大输出长度


整数类型b,c,d,

o,x,X浮点数类型

e,E,f,%

当中文字符宽度不够时,采用西文字符填充;中西文字符占用宽度不同。

解决方法:采用中文空格填充chr(12288)

将print**函数做修改

def printUnivList(ulist,num):
    #打印表头
    tplt=‘{0:^10}\t{1:{3}^10}\t{2:^10}‘#定义模板
    print(tplt.format(‘排名‘,‘学校名称‘,‘总分‘,chr(12288)))
    for i in range(num):
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))

输出结果如下:发现输出已经居中

原文地址:https://www.cnblogs.com/rayshaw/p/8605851.html

时间: 2024-10-03 10:47:34

(参考)爬虫5-爬取中国大学排名情况的相关文章

Python爬虫——定向爬取“中国大学排名网”

内容整理自中国大学MOOC——北京理工大学-蒿天-Python网络爬虫与信息提取 相关实战章节 我们预爬取的url如下 http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html 网页节选 在浏览器中读取网页源代码 可以 发现表格数据信息是直接写入HTML页面信息中,所以我们可以直接采取定向爬虫操作. 我们的整体设计思路如下: 1.从网络上获取大学排名网络内容 2.提取网页内容中信息到合适的数据结构 3.利用数据结构展示并输出结果 仔细观察可以发现

python爬取中国大学排名

教程来自:[Python网络爬虫与信息提取].MOOC. 北京理工大学 目标:爬取最好大学网前50名大学 代码如下: import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): try: r = requests.get(url,timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text exce

爬取中国大学排名

我们需要爬取2019年中国内地的大学排名,这里以物理学科为例,http://www.zuihaodaxue.cn/BCSR/wulixue2019.html. 这个页面比较简单爬取难度不大,这里我们使用python的requests,bs4,BeautifulSoup库,关于BeatutifulSoup库的文档可以在这个网站查询https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/ 先定义一个get函数来爬取相关信息 def get(url): tr

【Python爬虫】从html里爬取中国大学排名

from bs4 import BeautifulSoupimport requestsimport bs4 #bs4.element.Tag时用的上#获取网页页面HTMLdef getHTMLText(url): try: r = requests.request("get", url,timeout=30) r.raise_for_status() #如不是200报错 r.encoding = r.apparent_encoding #猜测编码然后赋予给解码 编码模式 demo =

使用selenium + chrome爬取中国大学Mooc网的计算机学科的所有课程链接

目的:使用selenium + chrome爬取中国大学Mooc网计算机学科的所有的课程链接列表 思路:找到每个分页的节点属性为class="m-course-list" 的div元素,再找到该元素下面的类属性为class = "u-clist f-bg f-cb f-pr j-href ga-click"的div元素的属性data-href的值,使用xpath获取. 难点:在网页源码里面,是看不到相关的课程链接信息,点击分页,发现地址栏的url一直都在变,但改变u

python爬虫爬取最好大学排名

#-*- coding:utf-8 -*- #-Author-= JamesBen #Email: [email protected] import requests from bs4 import BeautifulSoup import bs4 #定义第一个函数得到网页源代码,并且可以进行稳定的运行 def Get_HTML(url): try : use = {'User-Agent': 'Mozilla/5.0'} #此行代码骗过服务器我们是使用浏览器进行访问的,防止有些网站对我们进行拦

中国大学排名(定向爬虫)实例

中国大学排名(定向爬虫)实例 获取中国大学排名的爬虫实例,采用了requests和BeautifulSoup4函数库 中国大学排名网址:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html 功能描述: 输入:大学排名URL连接 输出:大学排名信息的屏幕输出(排名,大学名称,总分) 技术路线:equests和bs4 定向爬虫:仅对输入URL进行爬取,不扩展爬取 robots协议: 定向爬虫网址是否提供robots协议的约定,由于我们只访问了这个

【Python3 爬虫】U11_爬取中国天气网

目录 1.网页分析 2.代码实现 1.网页分析 庚子年初,各种大事件不期而至,又赶上最近气温突变,所以写个爬虫来爬取下中国天气网,并通过图表反映气温最低的前20个城市. 中国天气网:http://www.weather.com.cn/textFC/hb.shtml 打开后如下图: 从图中可以看到所有城市按照地区划分了,并且每个城市都有最低气温和最高气温,通过chrome查看Elements,如下: 从上图可以看到展示当天的数据,那么<div class='conMidtab'>..这个标签则没

Python爬取中国天气网天气

Python爬取中国天气网天气 基于requests库制作的爬虫. 使用方法:打开终端输入 "python3 weather.py 北京(或你所在的城市)" 程序正常运行需要在同文件夹下加入一个"data.csv"文件,内容请参考链接:https://www.cnblogs.com/Rhythm-/p/9255190.html 运行效果: 源码: import sys import re import requests import webbrowser from