网络爬虫——中国大学排名网

目标网址:

link.http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html

目标数据:

排名+学校名称+省市+总分+生源质量

任务要求:

全球有很多份大学排名,这里以上海交通大学研发的“软科中国最好大学排名2019”为例,,编写“大学排名爬虫”,从网络上获取数据 。拟从该网址爬取该名单上310 所国内大学的排名数据,并将它们打印出来。
网络爬虫——中国大学排名网

基本步骤:

大学排名爬虫的构建需要三个重要步骤:
第一,从网络上获取网页内容;
第二,分析网页内容并提取有用数据到恰当的数据结构中;
第三,利用数据结构展示或进一步处理数据。
由于大学排名是一个典型的二维数据,因此,采用二维列表存储该排名所涉及的表单数据。具体来说,采用requests 库爬取网页内容,使用beautifulsoup4 库分析网页中数据,提取310 个学校的排名及相关数据,存储到二维列表中,最后采用用户偏好的方式打印出来。

源码:

import requests
from bs4 import BeautifulSoup
import bs4
def getHtml(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return “”
def analysis(ulist,html):
soup=BeautifulSoup(html,‘lxml’)
#找到目标标签tbody,并查找子标签遍历
for tr in soup.find(‘tbody’).children:
#将找到的子标签复制给tds数组
if isinstance(tr,bs4.element.Tag):
tds=tr(‘td’)
#将子标签数组的值插入到列表中
ulist.append([tds[0].string,tds[1].string,tds[3].string])
def prin(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/zuihaodaxuepaiming2019.html’
html=getHtml(url)
analysis(uinfo,html)
prin(uinfo,20)
main()
结果输出如下:
网络爬虫——中国大学排名网

相关文章:

  • 2021-10-27
  • 2021-12-16
  • 2022-01-18
  • 2021-12-11
  • 2021-12-10
  • 2022-12-23
  • 2021-06-30
猜你喜欢
  • 2021-12-02
  • 2021-09-16
  • 2022-01-12
  • 2021-10-13
  • 2021-11-30
相关资源
相似解决方案