文章目录
Python爬虫(七)——中国大学排名定向爬虫
我们将使用上海交大开发的软科排名。网站:
http://www.zuihaodaxue.com/BCSR/ruanjiangongcheng2019.html
我们的目的是从这个网页中提取出2019年中国软件工程学科的排名、大学名称和总分。我们将会使用requests和bs4库。
确定爬虫是否可行
首先我们打开这个网站查看网站源代码。
发现里面有我们要的信息。然后查看网站的robots.txt,发现没有这个文件,因此我们爬取信息是合法的。
设计程序的结构
步骤
整个过程可以分为三步
- 从网络上获取大学排名网页内容,方法get_HTML_text()
- 提取网页内容中信息到合适的数据结构中,方法fill_univ_list()
- 利用数据结构展示结果,方法print_univ_list()
实现方法
模块的引入
我们使用requests库和bs4库,代码:
import requests
from bs4 import BeautifulSoup
import bs4
get_HTML_text()
输入为网页链接,输出为网页内容
代码:
def get_HTML_text(url):
try: #使用之前的代码框架返回html
r=requests.get(url,timeout=30)
r.raise_for_status() #如果出现异常返回空字符串
r.encoding=r.apparent_encoding
return r.text
except:
return ""
fill_univ_list()
输入为网页内容,然后将排名信息写入列表中。我们先观察网页HTML代码中的规律。
我们发现整个排名在tbody中,每个大学都在一个tr中,每个信息在td中。
代码:
def fill_univ_list(ulist, html):
soup = BeautifulSoup(html,