精华内容
下载资源
问答
  • 爬虫爬取最好大学排名

    千次阅读 2020-02-11 12:52:41
    最近跟着北京理工大学的网课 学习了爬虫的知识,看了老师讲的爬虫爬取最好大学排名。下面让我们来看一下爬虫是如何爬取网页上的信息的。 爬取网页:最好大学网 学习来源:哔哩哔哩-【Python网络爬虫与信息提取】....

    ☞☞☞点击查看更多优秀Python博客☜☜☜

    最近跟着北京理工大学的网课 学习了爬虫的知识,看了老师讲的爬虫爬取最好大学排名。下面让我们来看一下爬虫是如何爬取网页上的信息的。
    爬取网页:最好大学网
    学习来源:哔哩哔哩-【Python网络爬虫与信息提取】.MOOC. 北京理工大学
    首先我们打开网页查看网页源代码,寻找自己所需信息所在区域,截如下:
    在这里插入图片描述
    这样我们就成功地找到了所需要的信息,下面的工作就是通过程序找到以上信息并输出出来,下面直接上代码:

    程序设计思路:

    1. 首先我们需要得到网页源代码,可以使用两种方法获得,一种是使用requests库进行得到
    2. 对源代码进行处理可以使用BeautifulSoup库函数进行修饰
    3. 得到修饰后的源代码后我们就可以进行提取了
    4. 最后我们进行格式化输出
    5. 编写程序将以上函数进行运行顺序的匹配

    代码如下:

    
    #-*- coding:utf-8 -*-
    #-Author-= JamesBen
     #Email: 1597757775@qq.com
    
    import  requests
    from bs4 import  BeautifulSoup
    import bs4
    
    #定义第一个函数得到网页源代码,并且可以进行稳定的运行
    def  Get_HTML(url):
        try :
            use = {'User-Agent': 'Mozilla/5.0'}  #此行代码骗过服务器我们是使用浏览器进行访问的,防止有些网站对我们进行拦截
            r = requests.get(url, timeout = 30,headers = use)
            r.raise_for_status()      #如果状态不是200引发HTTPError异常
            r.encoding = r.apparent_encoding  #将文本的编辑方式传给头,防止造成编码错路出现乱码
            return  r.text
        except :
                return "产生异常"
    
    #定义一个函数得到特定的tr标签
    def  U_list(ulist,html):
        soup = BeautifulSoup(html,"html.parser")
        for tr in soup.find("tbody").children:
            if  isinstance(tr,bs4.element.Tag):  #筛选tr标签的类型,如果不是Tag定义的类型将过滤掉
                tds = tr("td")
                ulist.append([tds[0].string,tds[1].string,tds[3].string])
        pass
    
    #格式化输出函数
    def print_Univlist(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)))
        print("Suc"+str(num))
    
    def main():
        uinfo = []
        url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'
        html = Get_HTML(url)
        U_list( uinfo,html)
        print_Univlist( uinfo,20)
    
    
    if __name__ == "__main__":
        main()
    
    

    代码如上,运行结果如下:
    在这里插入图片描述
    以上就是全部的代码内容,希望对你的学习有帮助。

    代码细节分析

    得到源代码函数分析

    def  Get_HTML(url):
        try :
            use = {'User-Agent': 'Mozilla/5.0'}  #此行代码骗过服务器我们是使用浏览器进行访问的,防止有些网站对我们进行拦截
            r = requests.get(url, timeout = 30,headers = use)
            r.raise_for_status()      #如果状态不是200引发HTTPError异常
            r.encoding = r.apparent_encoding  #将文本的编辑方式传给头,防止造成编码错路出现乱码
            return  r.text
        except :
                return "产生异常"
    

    首先函数使用了try. …except…进行确保程序的稳定运行,在函数中首先在头文件中加入User-Agent的信息用于骗过服务器,让服务器误认为是浏览器操作。

    第二句是GET到网页源代码并将刚才的header加入到程序中

    r.raise_for_status() 确保程序的正常运行,若返回值不是200,则程序会运行except并返回"产生异常"

    得到特定的tr标签函数分析

    def  U_list(ulist,html):
        soup = BeautifulSoup(html,"html.parser")
        for tr in soup.find("tbody").children:
            if  isinstance(tr,bs4.element.Tag):  #筛选tr标签的类型,如果不是Tag定义的类型将过滤掉
                tds = tr("td")
                ulist.append([tds[0].string,tds[1].string,tds[3].string])
        pass
    

    首先我们将得到的源码传给soup,使用BeautifulSoup库函数,具体使用在上文中有讲解。
    下面一个for循环是为了在tbody中找出所有的儿子节点并给tr
    在if中筛选出符合要求的标签
    最后进行格式化输出

    以上即为两个重要函数的讲解,希望对你的学习有所帮助!

    **文章导航:**

    零基础学Python教程

    在这里插入图片描述

    展开全文
  • 简单的python爬虫小案例,爬取了最好大学网大学排名信息,并存入mysql数据库,制作地区大学分布数量柱状图,词云。可用作大作业参考使用,内附带文档、源码、注释
  • 中国最好大学排名定向爬虫学习视频:方法与思路:应用模块:数据提取方式:网页分析:代码如下:运行效果: 学习视频: 视频链接 欢迎留言指出错误。 方法与思路: 应用模块: requests:发送请求,获取响应 ...

    学习视频:

    视频链接
    欢迎留言指出错误。
    在这里插入图片描述

    方法与思路:

    应用模块:

    requests:发送请求,获取响应
    beautifulsoup4:从 HTML 或 XML 文件中提取数据的 Python 库.
    

    在这里插入图片描述

    数据提取方式:

    采用beautifulsoup库提取信息。

    网页分析:

    链接:中国最好大学排名2019

    在这里插入图片描述

    代码如下:

    在这里插入图片描述

    # encoding: utf-8
    # time: 2020/3/22 16:44
    # 说明:
    
    from bs4 import BeautifulSoup
    import bs4
    import requests
    
    #输入是获取URL信息,输出是URL内容
    def gethtmltxt(url):
        # 检测是否异常
        try:
            # get函数获取URL信息,并设定timeout时间为30秒
            r = requests.get(url, timeout=30)
            # print(r.status_code)可查询状态码,返回200
            # 如果发送了一个错误请求(一个4XX客户端错误,或者5XX服务器错误响应),
            # 我们可以通过Response.raise_for_status()来抛出异常
            r.raise_for_status()
            #print(r.encoding)可查看网页的编码方式,此网站为ISO-8859-1,
            # r.apparent_encoding从内容中分析出的响应内容编码方式
            r.encoding = r.apparent_encoding
            # r.text:http响应内容的字符串形式,即url的页面内容
            # 将网页的信息内容返回给其他部分
            return (r.text)
        # 如果异常则返回一个空字符
        except:
            return ""
    
    #将HTML页面放到一个空列表中,列表名称定义为ulist
    def culi(ulist, html):
        soup = BeautifulSoup(html, "html.parser")
        # 用for语句查找HTML中的tbody标签,并将它的孩子children做一个遍历,变量中每一个tr对应一所大学信息
        for tr in soup.find("tbody").children:
            # 检测tr标签的类型,如果不是bs4库定义的Tag类型将过滤掉
            if isinstance(tr, bs4.element.Tag):
                # 将tr标签中的td标签存为一个列表类型tds,tr('td')相当于tr.find_all("td")
                tds = tr("td")
                # 在ulist中增加所需字段,分别对应大学排名,大学名称,大学地域
                ulist.append([tds[0].string, tds[1].string, tds[2].string])
    
    #将ulist中的信息打印出来,num表示需要将列表中多少个选项或元素打印出来
    def printhanshu(ulist, num):
        # 设置表头宽度
        a = "{0:^10}{1:{3}^10}{2:^10}"
        # 实现对表头的打印,{}表示槽,10表示取十位间隔,^表示居中,chr((12288)表示中文空格
        print(a.format("排名", "学校", "地域", chr(12288)))
        for i in range(num):
            # 将第i个学校的信息作为一个简短的变量u来代替
            u = ulist[i]
            # 打印出每一所学校的信息
            print(a.format(u[0], u[1], u[2], chr(12288)))
    
    #主函数
    def main():
        # 将大学信息放到一个列表中,列表名叫unifo
        unifo = []
        # 给出大学排名的url链接
        url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html"
        # 将URL转换成HTML
        html = gethtmltxt(url)
        # 将HTML的信息提取后放在unifo变量中
        culi(unifo, html)
        # 打印20所学校信息
        printhanshu(unifo, 20)
    
    
    main()
    
    

    运行效果:

    在这里插入图片描述

    展开全文
  • 第一步:从网络上获取大学排名网页内容 第二步:提取网页内容中信息到合适的数据结构 第三步:利用数据结构展示并输出结果 import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): # 返回...

    程序的结构设计
    第一步:从网络上获取大学排名网页内容
    第二步:提取网页内容中信息到合适的数据结构
    第三步:利用数据结构展示并输出结果

    import requests
    from bs4 import BeautifulSoup
    import bs4
    
    
    def getHTMLText(url):  # 返回html页面内容
        try:
            r = requests.get(url, timeout=30)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            return r.text
        except:
            return ""
    
    
    def fillUnivList(ulist, html):  # 将html页面内容返回到list列表中
        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].string, tds[1].string, tds[2].string])
    
    
    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]))
    
    
    if __name__ == "__main__":
        uinfo = []
        url = "http://zuihaodaxue.cn/zuihaodaxuepaiming2019.html"
        html = getHTMLText(url)
        fillUnivList(uinfo, html)
        printUnivList(uinfo, 5)  # 5 univ
    
    
    import requests
    from bs4 import BeautifulSoup
    import bs4
    
    def getHTMLText(url):  # 返回html页面内容
        try:
            r = requests.get(url, timeout=30)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            return r.text
        except:
            return ""
    
    
    def fillUnivList(ulist, html):  # 将html页面内容返回到list列表中
        soup = BeautifulSoup(html, "html.parser")
        for tr in soup.find('tbody').children:  # 解析html代码中tbody标签所在的位置
            if isinstance(tr, bs4.element.Tag):  # 过滤掉非标签类型数据
                tds = tr('td')
                ulist.append([tds[0].string, tds[1].string, tds[2].string])
    
    
    def printUnivList(ulist, num):  # 将列表中内容打印出来
        tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"  # 使用format第三个函数填充即中文
        print(tplt.format("排名", "学校名称", "总分", chr(12288)))
        for i in range(num):
            u = ulist[i]
            print(tplt.format(u[0], u[1], u[2], chr(12288)))
    
    
    if __name__ == "__main__":
        uinfo = []
        url = "http://zuihaodaxue.cn/zuihaodaxuepaiming2019.html"
        html = getHTMLText(url)
        fillUnivList(uinfo, html)
        printUnivList(uinfo, 20)  # 5 univ
    
    
    展开全文
  • 爬虫-最好大学

    2020-07-21 17:54:46
    import bs4 import requests from bs4 import BeautifulSoup def getHTMLTEXT(URL): #将URL信息爬取出来 try: r = requests.get(URL,timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding ...
    import bs4
    import requests
    from bs4 import BeautifulSoup
    
    def getHTMLTEXT(URL): #将URL信息爬取出来
        try:
            r = requests.get(URL,timeout = 30)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            return r.text
        except:
            return ""
    
    def fileUnivList(ulist,html): #提取关键数据,添加到ulist列表中
        soup = BeautifulSoup(html,"html.parser")
        for tr in soup.find('tbody').children:
            if isinstance(tr,bs4.element.Tag):
                tds = tr('td')  #提取td标签
                ulist.append([tds[0].string,tds[1].string,tds[2].string])
    
    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)))
    
    def main():
        uinfo = []
        url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2020.html'
        html = getHTMLTEXT(url)
        fileUnivList(uinfo,html)
        printUnivList(uinfo,20) #输出20所学校的相关信息
    
    main()
    
    
    展开全文
  • 关于最好大学网的爬虫 暑期在家看了慕课的爬虫视频,然后练练手这是我的关于最好大学网的一次爬虫。新手上路,错误难免。 下面是我对这次爬虫的理解 一:关于最好大学最好大学网 二:下面代码 // Auther Dath //...
  • #最好大学网无robots协议 #2017/4/28函数过于简单,不再赘述 import requests from bs4 import BeautifulSoup import bs4def getHTMLText(url): try: r = requests.get(url,timeout = 30) r.ra
  • 1. 任务介绍需求分析:爬取最好大学网,软科中国最好大学排名2019的数据,包括名次、学校名称、省份、总分、指标得分。2. 爬虫的基本流程准备工作通过浏览器查看分析目标网页,学习编程基础规范。获取数据通过...
  • 使用requests库和BeautifulSoup库实现对最好大学网大学排名信息爬取 链接:http://www.zuihaodaxue.com/Greater_China_Ranking2019_0.html 代码: import requests from bs4 import BeautifulSoup import bs4 #从网络...
  • 爬虫软科,最好大学

    2020-12-12 23:19:13
    request爬取软科,最好大学网,源码+详细注释
  • 爬虫目的 抓取专项学科获取该学科在全国各高校的排名情况 获取该学科所在高校在全国的综合排名情况 获取该学科全国范围博士点的数量 获取该学科的重点学科院校情况 根据网址爬取网页 使用最基本的网页爬取通用框架:...
  • 整理于北京理工大学-嵩天老师的爬虫mooc 包括了爬虫程序和对中文字符居中问题的解决 程序:  import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): //获取HTML的内容 try: r =...
  • 上海交通大学设计了一个“最好大学网”,上面列出了当前的大学排名。我们要设计爬虫程序,爬取大学排名信息。 爬虫功能要求: 输入:大学排名URL链接输出:大学排名信息的屏幕输出(排名,大学名称,总分)工具:...
  • 1清华大学 北京2北京大学 北京3浙江大学 浙江4上海交通大学 上海5复旦大学 上海6中国科学技术大学 安徽7华中科技大学 湖北7南京大学 江苏9中山大学 ...
  • import requests from bs4 import BeautifulSoup import bs4 ulist1=[] #获取对应网址文本信息 def getHTMLText(url): try: r = requests.get(url,timeout = 30)#获取对应网址信息 r.raise_for_status() #异常...
  • print( "{0:^10}\t{1:{3}^10}\t{2:^10}".format("排名","大学名字","分数",chr(12288))) for i in range(516): u = ulist[i] print(tplp.format(u[0],u[1],u[3],chr(12288))) print("Success")
  • 实例1–2019中国最好大学排名定向爬虫 参考博客开始学习:https://www.cnblogs.com/Jerry-Dong/p/7647850.html 增加了一些简单功能 可以选择年份 Year = '2018' url = '...
  • 学习前福利 微信公众号-西红柿的自我修养 程序员天天只顾写生活琐事的文章可就太对不起其他的程序员们了,某大佬给我在线寄了一张刀片的图片...爬取最好大学网的大学高校排名并输出到csv文件中。还是那句话...
  • 爬虫中国最好大学排名

    千次阅读 2019-03-22 19:51:28
    爬取内容:中国最好大学排名 输入:大学排名网页的url输入 输出:大学排名信息的屏幕输出 技术路线:requests,bs4 step1:从网络爬取网页内容 step2:提取网页信息到合适的数据结构 step3:利用数据结构展示...
  • 【MOOC】Python网络爬虫与信息提取 import requests from bs4 import BeautifulSoup import bs4 # 获取网页内容 def getHTMLText(url): try: r = requests.get(url, timeout=30) r.raise_for_status
  • 爬虫目的 抓取专项学科获取该学科在全国各高校的排名情况 获取该学科所在高校在全国的综合排名情况 获取该学科全国范围博士点的数量 获取该学科的重点学科院校情况 根据网址爬取网页 使用最基本的网页爬取通用框架...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 253
精华内容 101
关键字:

最好大学爬虫

爬虫 订阅