爬虫实例:爬取中国大学排名Top20
每日一句:世界上没有一条道路是重复的,也没有一个人生是能够替代的。——余华《活着》
在学习对HTML页面信息的提取后,下面以实例来学习爬取网页。
首先

可以看到该网站并未对爬虫做出相关限制。
对大学排名网页爬取的
1.输入:大学排名URL链接。
2.输出:大学排名信息的输出(排名,大学名称,总分)。
3.技术路线:Requests+bs4。
4.定向爬虫:仅对输入URL进行爬取,不扩展爬取。
1.从网络上获得大学排名的网页内容。
2.提取网页内容中信息到合适的数据结构。
3.利用数据结构展示并输出结果。
其中,最重要的便是在网页的代码中

import requests
from bs4 import BeautifulSoup
import bs4
def getThmltext(url):#获取网页内容
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding#修改编码
return r.text
except:
return ""
def fillUnivlist(info,html):#查找相关信息
soup=BeautifulSoup(html,"html.parser")
for tr in soup.find('tbody').children:
if isinstance(tr,bs4.element.Tag):
tds=tr('td')
info.append([str(tr('td')[0].contents[0]).strip(), tds[1].a.string, str(tr('td')[4].contents[0]).strip()])
return info
def printUnivlist(info,num):#打印相关数据
print("{:^10}\t{:^6}\t{:^10}".format("排名","学校","总分"))
for i in range(num):
u=info[i]
print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))
def main():
info=[]
url='https://www.shanghairanking.cn/rankings/bcur/2020'
html=getThmltext(url)
info=fillUnivlist(info,html)
printUnivlist(info,20)#20个学校信息
main()
