定向爬虫实例之中国大学排名定向爬虫
2018-03-19 16:58
267 查看
中国大学排名定向爬虫
定向爬虫指的是只针对所给的url的页面爬取,不扩展爬取的爬虫。给的例子的网页采用静态页面的方式,是非常好的学习例子。本次实例的要求:
输入:大学排名url
输出:大学排名信息的屏幕输出(排名,大学名称,总分)
url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html"
import requests from bs4 import BeautifulSoup import os import re import bs4
程序的结构的设计:
从网络上获取大学排名的网页内容getHTMLText()
提取网页内容中的信息到合适的数据结构fillUnivList()
利用数据结构展示并输出结果printUnivList()
分析页面可以知道这里只用到了BeautifulSoup即可得到想要的数据。每个tr就是一个学校,每个tr中的每个td就是一个属性,利用children和find_all就可以了。
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.tbody.children:#这里每一个tr就是一个学校 if isinstance(tr, bs4.element.Tag):#需要过滤掉有可能出现的字符串 tds = tr('td') ulist.append([tds[0].string, tds[1].string, tds[3].string]) print (len(ulist)) def printUnivList(ulist, num): ''' {:^x}表示限制输出宽度为x个字符,^表示输出时右对齐。若此宽度小于字符串的实际宽度,以实际宽度输出。 但是如果不足会用西文字符空格补充,西文和中文字符占用不同所以可能会有对其问题 所以可以用chr(12288)来用中文空格 下面这句话的{3}就是format中第三个变量来填充(其实是第四个) 而这里由于有标号就必须要用{X:y}了 ''' tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}" print (tplt.format("ranking", "name", "score",chr(12288))) for i in range(num): u = ulist[i] print (tplt.format(u[0], u[1], u[2], chr(12288))) print ("Suc" + str(num)) def main(): unifo = [] url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html" html = getHTMLText(url) fillUnivList(unifo, html) printUnivList(unifo, 20)# 20 university main()
相关文章推荐
- 中国大学排名定向爬虫(实例1)
- 中国大学排名定向爬取实例
- Python网络爬虫与信息提取-Day10-(实例)中国大学排名定向爬虫
- 定向爬虫:中国大学排名定向爬虫(一)
- 爬虫实例(二)——中国大学排名爬虫
- python爬虫由浅入深7--基于中国大学排名的定向爬虫
- 中国大学排名爬虫
- 中国大学计算机专业排名
- 用py来爬取中国大学排名
- requests‐bs4路线实现中国大学排名定向爬虫
- Mysql排序获取排名的实例代码
- 爬取:中国大学排名
- python爬虫学习 之 定向爬取 中国大学排名
- Oracle排名函数(Rank)实例详解
- sql实例:成绩排名,日期函数及格式转换
- 中国大学排名爬虫
- SQL Server 排名函数(row_number,rank,dense_rank,ntile)实例,详解
- 计算机科学与技术专业--2012年本科554所中国大学分专业排名
- SQL 语句技巧--排名函数的使用实例
- Oracle排名函数(Rank)实例详解