-
爬虫爬取最好大学排名
2020-02-11 12:52:41最近跟着北京理工大学的网课 学习了爬虫的知识,看了老师讲的爬虫爬取最好大学排名。下面让我们来看一下爬虫是如何爬取网页上的信息的。 爬取网页:最好大学网 学习来源:哔哩哔哩-【Python网络爬虫与信息提取】....最近跟着北京理工大学的网课 学习了爬虫的知识,看了老师讲的爬虫爬取最好大学排名。下面让我们来看一下爬虫是如何爬取网页上的信息的。
爬取网页:最好大学网
学习来源:哔哩哔哩-【Python网络爬虫与信息提取】.MOOC. 北京理工大学
首先我们打开网页查看网页源代码,寻找自己所需信息所在区域,截如下:
这样我们就成功地找到了所需要的信息,下面的工作就是通过程序找到以上信息并输出出来,下面直接上代码:程序设计思路:
- 首先我们需要得到网页源代码,可以使用两种方法获得,一种是使用requests库进行得到
- 对源代码进行处理可以使用BeautifulSoup库函数进行修饰
- 得到修饰后的源代码后我们就可以进行提取了
- 最后我们进行格式化输出
- 编写程序将以上函数进行运行顺序的匹配
代码如下:
#-*- 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爬虫最好大学网
2018-12-26 17:41:31简单的python爬虫小案例,爬取了最好大学网大学排名信息,并存入mysql数据库,制作地区大学分布数量柱状图,词云。可用作大作业参考使用,内附带文档、源码、注释 -
中国最好大学排名定向爬虫
2020-03-23 12:50:32中国最好大学排名定向爬虫学习视频:方法与思路:应用模块:数据提取方式:网页分析:代码如下:运行效果: 学习视频: 视频链接 欢迎留言指出错误。 方法与思路: 应用模块: 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()
运行效果:
-
Python-爬虫-实例中国最好大学排名爬虫
2019-11-09 09:39:39第一步:从网络上获取大学排名网页内容 第二步:提取网页内容中信息到合适的数据结构 第三步:利用数据结构展示并输出结果 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:46import 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()
-
python爬虫 --最好大学网
2019-07-23 15:37:46关于最好大学网的爬虫 暑期在家看了慕课的爬虫视频,然后练练手这是我的关于最好大学网的一次爬虫。新手上路,错误难免。 下面是我对这次爬虫的理解 一:关于最好大学网 最好大学网 二:下面代码 // Auther Dath //... -
最好大学网python爬虫代码
2017-04-28 00:33:42#最好大学网无robots协议 #2017/4/28函数过于简单,不再赘述 import requests from bs4 import BeautifulSoup import bs4def getHTMLText(url): try: r = requests.get(url,timeout = 30) r.ra -
python中国最好大学排名_爬虫项目一:2019年中国最好大学排名
2020-12-22 09:32:591. 任务介绍需求分析:爬取最好大学网,软科中国最好大学排名2019的数据,包括名次、学校名称、省份、总分、指标得分。2. 爬虫的基本流程准备工作通过浏览器查看分析目标网页,学习编程基础规范。获取数据通过... -
使用python爬虫爬取最好大学网大学排名实例
2021-01-06 14:17:47使用requests库和BeautifulSoup库实现对最好大学网大学排名信息爬取 链接:http://www.zuihaodaxue.com/Greater_China_Ranking2019_0.html 代码: import requests from bs4 import BeautifulSoup import bs4 #从网络... -
爬虫软科,最好大学网
2020-12-12 23:19:13request爬取软科,最好大学网,源码+详细注释 -
爬虫入门之最好大学网–专项学科全国排名爬虫
2020-12-22 01:23:37爬虫目的 抓取专项学科获取该学科在全国各高校的排名情况 获取该学科所在高校在全国的综合排名情况 获取该学科全国范围博士点的数量 获取该学科的重点学科院校情况 根据网址爬取网页 使用最基本的网页爬取通用框架:... -
爬虫——最好大学排名实例
2018-07-28 14:54:22整理于北京理工大学-嵩天老师的爬虫mooc 包括了爬虫程序和对中文字符居中问题的解决 程序: import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): //获取HTML的内容 try: r =... -
Python爬虫实例: 爬取“最好大学网”大学排名
2018-10-25 17:52:59上海交通大学设计了一个“最好大学网”,上面列出了当前的大学排名。我们要设计爬虫程序,爬取大学排名信息。 爬虫功能要求: 输入:大学排名URL链接输出:大学排名信息的屏幕输出(排名,大学名称,总分)工具:... -
python爬虫模板-python爬虫模板 - 最好大学网
2020-11-11 14:45:101清华大学 北京2北京大学 北京3浙江大学 浙江4上海交通大学 上海5复旦大学 上海6中国科学技术大学 安徽7华中科技大学 湖北7南京大学 江苏9中山大学 ... -
Python爬虫-DAY3-爬虫中国最好大学
2021-01-20 22:21:41import requests from bs4 import BeautifulSoup import bs4 ulist1=[] #获取对应网址文本信息 def getHTMLText(url): try: r = requests.get(url,timeout = 30)#获取对应网址信息 r.raise_for_status() #异常... -
2018最好大学排行榜 爬虫爬取
2018-07-06 12:24:50print( "{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中国最好大学排名定向爬虫
2019-06-19 11:18:39实例1–2019中国最好大学排名定向爬虫 参考博客开始学习:https://www.cnblogs.com/Jerry-Dong/p/7647850.html 增加了一些简单功能 可以选择年份 Year = '2018' url = '... -
python爬虫初体验,爬取中国最好大学网大学排名
2020-03-26 22:16:41学习前福利 微信公众号-西红柿的自我修养 程序员天天只顾写生活琐事的文章可就太对不起其他的程序员们了,某大佬给我在线寄了一张刀片的图片...爬取最好大学网的大学高校排名并输出到csv文件中。还是那句话... -
爬虫中国最好的大学排名
2019-03-22 19:51:28爬取内容:中国最好的大学排名 输入:大学排名网页的url输入 输出:大学排名信息的屏幕输出 技术路线:requests,bs4 step1:从网络爬取网页内容 step2:提取网页信息到合适的数据结构 step3:利用数据结构展示... -
爬虫实战(1)最好大学网大学排名
2018-01-03 20:07:23【MOOC】Python网络爬虫与信息提取 import requests from bs4 import BeautifulSoup import bs4 # 获取网页内容 def getHTMLText(url): try: r = requests.get(url, timeout=30) r.raise_for_status -
爬虫入门之最好大学网--专项学科全国排名爬虫
2020-03-18 17:17:15爬虫目的 抓取专项学科获取该学科在全国各高校的排名情况 获取该学科所在高校在全国的综合排名情况 获取该学科全国范围博士点的数量 获取该学科的重点学科院校情况 根据网址爬取网页 使用最基本的网页爬取通用框架...
收藏数
253
精华内容
101
-
Samba 服务配置与管理
-
PPTP_NNN 服务生产环境实战教程
-
gt_dysy.rar
-
Wide field-of-view foveated imaging system
-
牛牛量化策略交易
-
iptables 企业级防火墙配置(四表五链)
-
MySQL 管理利器 mysql-utilities
-
回顾历史_回顾美联储历史,美国货币政策是如何演变的?
-
Vue3.0 起跑 搭建项目后应用(二)
-
利用多核多线程进行程序优化
-
PPT大神之路高清教程
-
Rockchip RV1126 数据手册 V1.2.rar
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
jquery库是什么意思
-
聊天机器人-源码
-
window连接虚拟机中的docker容器
-
memoryGameProject:用于Springboard课程的Memory Game Project(4.5)-源码
-
货币金融学学习笔记(第4篇中央银行与货币操作政策)
-
考虑后续工序的择时综合调度算法
-
朱老师c++课程第3部分-3.5STL的其他容器讲解