在学习过程中遇到了一些问题,都手动记录并且修改更正,保证所有的代码为有效。且结合其他的博客总结了一些常见问题的解决方式。
本教程不商用,仅为学习参考使用。如需转载,请联系本人。
Reference
爬虫 MOOC
数据分析 MOOC
廖雪峰老师的 Python 教程
功能描述
输入:大学排名URL链接
输出:大学排名信息的屏幕输出(排名,大学名称,总分)
技术路线:requests‐bs4
定向爬虫:仅对输入 URL 进行爬取,不扩展爬取
定向爬虫可行性
1.确定要爬取的信息是否写在 HTML 的页面代码中
https://www.shanghairanking.cn/rankings/bcur/2021
2.没有 robots 协议,即没有爬虫的限制
程序的结构设计
步骤1:从网络上获取大学排名网页内容 getHTMLText()
步骤2:提取网页内容中信息到合适的数据结构 fillUnivList()
步骤3:利用数据结构展示并输出结果 printUnivList()
程序编写
先使用异常处理形式爬取网站,修改编码并返回 url 的内容。(requests)
然后找到 tbody 标签,在tbody孩子标签中挨个检索 tr(for循环),如果类型和 tag 一致,则查找 tr 中的 td 标签,以二维列表的数据结构存储信息 [[“1”, “清华大学”, “北京”], [“2”, “北京大学”, “北京”], …]。(BeautifulSoup)
新版的排名的大学名字封装在 a 标签中,所以这里需要具体到查找属性为 ‘name-cn’ 的 a 标签并存储其字符串,即大学的中文名称。相应代码只需要做细微修改即可
最后格式化输出信息。
格式化输出回顾:
源代码
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
except:
return ""
def fillUnivList(ulist, html):
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find('tbody').children: #先检索到tbody标签
if isinstance(tr, bs4.element.Tag):
tds = tr('td') #查询tr中的td标签,等价于tr.find_all('td')
# 新版的排名封装在a标签中,所以这里需要具体到查找属性为'name-cn'的a标签并存储其字符串,即大学的中文名称
a = tr('a','name-cn')
ulist.append([tds[0].string.strip(),a[0].string.strip(),tds[2].text.strip(),tds[4].string.strip()]) # 使用二维列表存储信息
def printUnivList(ulist, num):
print("{:^10}\t{:^6}\t{:^10}".format("排名","学校名称","总分")) #取10/6/10位中间对齐
for i in range(num):
u = ulist[i]
print("{:^10}\t{:^6}\t{:^10}".format(u[0], u[1], u[3]))
def main():
uinfo = []
url = "https://www.shanghairanking.cn/rankings/bcur/2021"
html = getHTMLText(url)
fillUnivList(uinfo, html)
printUnivList(uinfo, 20) # 20 univ
main()
登录后复制
程序优化
中文对齐问题的原因:
当中文字符宽度不够时,采用西文字符填充;中西文字符占用宽度不同。
中文对齐问题的解决:
采用中文字符的空格填充 chr(12288)
def printUnivList(ulist, num):
tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
# {3}表示需要填充时使用format的第三个变量进行填充,即使用中文空格
print(tplt.format("排名", "学校名称", "总分", chr(12288)))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0], u[1], u[3], chr(12288)))
登录后复制
优化后的程序如下:
# -*- coding:utf-8 -*-
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
except:
return ""
def fillUnivList(ulist, html):
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find('tbody').children: # 先检索到tbody标签
if isinstance(tr, bs4.element.Tag):
tds = tr('td') # 查询tr中的td标签,等价于tr.find_all('td')
# 新版的排名封装在a标签中,所以这里需要具体到查找属性为'name-cn'的a标签并存储其字符串,即大学的中文名称
a = tr('a','name-cn')
ulist.append([tds[0].string.strip(),a[0].string.strip(),tds[2].text.strip(),tds[4].string.strip()]) # 使用二维列表存储信息
def printUnivList(ulist, num):
tplt = "{0:^10}\t{1:{4}^10}\t{2:^10}\t{3:^10}"
# {3}表示需要填充时使用format的第三个变量进行填充,即使用中文空格
print(tplt.format("排名", "学校名称", "地区", "总分", chr(12288)))
for i in range(num):
u = ulist[i]
print(tplt.format(u[0], u[1], u[2], u[3], chr(12288)))
def main():
uinfo = []
url = "https://www.shanghairanking.cn/rankings/bcur/2021"
html = getHTMLText(url)
fillUnivList(uinfo, html)
printUnivList(uinfo, 20) # 20 univ
if __name__ == "__main__":
main()
登录后复制
总结
采用 requests‐bs4 路线实现了中国大学排名定向爬虫。
对中英文混排输出问题进行优化。
爬虫
python
数据挖掘
https
html
仙侠问道手机游戏
精选推荐
广告
中国大学排名的爬虫实战
1014阅读·0评论·0点赞
2022年1月24日
Python 爬虫-2020年中国大学排名
469阅读·5评论·1点赞
2020年9月13日
爬取大学排名信息实验报告
143阅读·0评论·0点赞
2022年10月23日
Python爬虫(一)—— 中国大学排名
6382阅读·11评论·11点赞
2022年4月2日
【Python爬虫】爬取2022软科全国大学排行榜
3115阅读·6评论·7点赞
2022年7月3日
【爬虫实战】5Python网络爬虫——中国大学排名定向爬虫
595阅读·3评论·5点赞
2021年1月17日
升级快的传奇手游
精选推荐
广告
Python练习-爬虫(附加爬取中国大学排名)
3539阅读·5评论·4点赞
2022年1月6日
【网络爬虫】爬取中国大学排名网站上的排名信息,将排名前20的大学的信息保存为文本文件并在窗口打印的python程序
1445阅读·1评论·4点赞
2022年1月26日
2.python爬虫实战:爬取近5年的中国大学排行榜信息【Python】(测试代码+api例程)
865阅读·0评论·1点赞
2022年5月19日
python爬虫案例典型:爬取大学排名(亲测有效)
2369阅读·0评论·5点赞
2022年6月12日
python爬虫 2021中国大学排名定向爬虫
5729阅读·8评论·26点赞
2021年4月28日
Python网络爬虫实例——“中国最好大学排名爬取”(嵩天:北理工大学)学习笔记
6217阅读·1评论·13点赞
2019年3月20日
最新2022中国大学排名发布!
216阅读·0评论·0点赞
2022年2月22日
python爬虫分析大学排名_Python爬虫之爬取中国大学排名(BeautifulSoup库)
1342阅读·0评论·2点赞
2021年2月4日
python实例,python网络爬虫爬取大学排名!
1931阅读·0评论·2点赞
2018年11月20日
学习笔记:中国大学排名定向爬虫
5171阅读·4评论·5点赞
2021年12月23日
【爬虫】爬取大学排名信息
252阅读·0评论·0点赞
2022年10月6日
网络爬虫爬取中国大学排名,并存入数据库
573阅读·0评论·1点赞
2019年9月21日
Python3爬虫爬取中国大学排名数据并写入MySQL数据库
2272阅读·0评论·2点赞
2018年10月17日
python网络爬虫与信息提取-04-爬取某大学排名网站的排名数据
334阅读·0评论·0点赞
2020年1月19日
去首页
看看更多热门内容
评论18
weixin_48444032
1
为什么只能最多获取到30条?怎么修改?
2022.04.26
qq_56912992
赞
如果想把数据保存到excel具体应该怎么改呢
2022.12.03
qq_56912992
赞
你好我想多获取到办学资源那一列数据,但是为什么我添加了tds[5].string.strip()],后面的format也改了,但是只出现列头的”办学资源“文字,却不出现相应的数字数据呢,求解答!!
2019年下半年全国计算机等级考试(NCRE)考试时间为9月21日至23日。
重庆考试时间和全国同步,为9月的倒数第二个周六开始,持续三天时间。
另告知,二级考试有所变动,自2019年3月考试起,二级语言类及数据库类科目(即除MS Office
高级应用外的其他二级科目)调整获证条件为:总分达到60分且选择题得分达到50%及以上(即
择题得分要达到20分及以上)的考生方可取得合格证书。
2019年下半年英语六级考试时间为12月14日。
具体时间为15:10-17:25分,考试时长130分钟。
大学生计算机二级考试分为四大类、九小类,具体如下:
NCRE二级科目设置
通常在非计算机专业的大学生中比较常见的是考MS Office、Python、C语言。
我本人考的是MS Office,内容相对来说简单,每次考生占总数的80%以上,但通过率只有21.07%。考试用的软件就是微软的Office办公软件。机考试题分为基础选择题,Word、EXCEL、PPT办公软件高级应用,四大板块。
第一部分是计算机基础知识,主要涉及的是计算机的发展历史、数据的储存方式、计算机病毒、计算机网络的概念原理等。这一部分是比较困难的,很多人会用电脑,但是并不清楚电脑的原理。基础选择题共有20道,需要通过记忆大量的知识才可以通过。在此建议使用刷题战术,网上有很多题库可以供你挑选。
第二部分是Word的功能和使用,就是平常咱们制作文档的软件。word分值较大,占据试卷30分,只要你认真刷过题,就能通过。题型无非邀请函,论文修改,信件等题目,具体数值会有区别, *** 作不会差太多,也有可能会出现原题。
第三部分是Excel的功能和使用,我认为这一部分是最难的,Excel题型在考试中有30分,涉及大量的公式运用,不太容易。同时,Excel的题目很长,有可能出现题还没读完就没时间做了的情况。
第四部分是PowerPoint的功能和使用,这一部分是比较简单的,大家都喜欢做这部分的题,大部分同学都做过PPT,这一部分你只要发挥平常的水平就可以拿到分,尽量洗心。
最后,你可以背一些常用的快捷键,可以加快你的答题速度。
计算机二级证书
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)