python爬虫案例:中国大学排名定向爬虫
功能描述:
输入:大学排名URL链接
输出:大学牌型信息的屏幕输出(排名, 大学名称, 总分)
使用的库:requests,bs4
定向爬虫:仅对输入URL进行爬取,不扩展爬取
【先判断网页中的数据是否动态生成,能否在源代码中获取数据信息】
【查看Robots协议】
设计步骤:
- 从网络上获取大学排名网页内容
- 提取网页内容中的信息到合适的数据结构中
- 利用数据结构展示并输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| import requests from bs4 import BeautifulSoup import bs4
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.find('tbody').children: if isinstance(tr, bs4.element.Tag): tds = tr('td') ulist.append([tds[0].string, tds[1].string, tds[3].string])
def printUnivList(ulist, num):
tmpl = "{0:{3}^10}\t{1:{3}^10}\t{2:{3}^10}" print(tmpl.format("排名", "学校", "总分", chr(12288))) for i in range(num): temp = ulist[i] print(tmpl.format(temp[0], temp[1], temp[2], chr(12288)))
def main(): uinfo = [] url = "http://zuihaodaxue.cn/zuihaodaxuepaiming2019.html" html = getHTMLText(url) fillUnivList(uinfo, html) printUnivList(uinfo, 20)
main()
|