中国大学排名(定向爬虫)实例
获取中国大学排名的爬虫实例,采用了requests和BeautifulSoup4函数库
中国大学排名网址:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html
功能描述:
输入:大学排名URL连接
输出:大学排名信息的屏幕输出(排名,大学名称,总分)
技术路线:equests和bs4
定向爬虫:仅对输入URL进行爬取,不扩展爬取
robots协议:
定向爬虫网址是否提供robots协议的约定,由于我们只访问了这个网站的一个链接,可以手动查看。
输入:http://www.zuihaodaxue.cn/robots.txt
发现网页不存在(如下图)
说明这个网站并没有通过robots协议对爬虫进行相应的限制,因此我们对大学排名的爬取是可以实现的。
程序结构设计:
步骤1:从网络上获取大学排名网页内容:def getHTMLText(url)
步骤2:提取网页内容中信息到合适的数据结构:def fillUnivList(ulist, html)
步骤3:利用数据结构展示并输出结果:def printUnivList(ulist, num)
完整代码:
1 #CrawUnivRankingB.py 2 import requests 3 from bs4 import BeautifulSoup 4 import bs4 5 6 # 将网页中的信息爬去出来并返回,,从网络中获取大学排名网页内容 7 def getHTMLText(url): 8 try: 9 r = requests.get(url, timeout=30) 10 r.raise_for_status()#异常信息 11 r.encoding = r.apparent_encoding 12 return r.text 13 except: 14 return "" 15 16 # 提取html内容中信息到合适的数据结构中 17 def fillUnivList(ulist, html): 18 soup = BeautifulSoup(html, "html.parser") 19 for tr in soup.find(‘tbody‘).children: 20 # 检测tr标签的类型,如果tr标签的类型不是bs4类型 21 if isinstance(tr, bs4.element.Tag): 22 tds = tr(‘td‘) 23 ulist.append([tds[0].string, tds[1].string, tds[3].string]) 24 25 # 利用数据结构展示并输出结果 26 def printUnivList(ulist, num): 27 tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}" 28 print(tplt.format("排名","学校名称","总分",chr(12288))) 29 for i in range(num): 30 u=ulist[i] 31 print(tplt.format(u[0],u[1],u[2],chr(12288))) 32 33 def main(): 34 uinfo = [] 35 url = ‘http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html‘ 36 html = getHTMLText(url) 37 fillUnivList(uinfo, html) 38 printUnivList(uinfo, 20) #20个学校信息 39 main()
原文地址:https://www.cnblogs.com/cyt99/p/11958453.html
时间: 2024-11-06 11:37:45