本文共 1519 字,大约阅读时间需要 5 分钟。
输入:大学排名url链接
输出:大学排名信息的屏幕输出(排名、大学、总分)技术路线:requests、bs4
定向爬虫:仅对输入url进行爬取,不扩展爬取函数:getHTMLText(url)
函数:fillUnivList(ulist, html)
<tbody>
标签,筛选出大学排名信息<tr>
,提取每行的<td>
标签内容ulist
数据结构中函数:printUnivList(ulist, num)
num
,输出前num
名大学排名信息import requestsfrom bs4 import BeautifulSoupdef 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, BeautifulSoup.element.Tag): tds = tr.find_all('td') if tds: ulist.append([tds[0].string, tds[1].string, tds[2].string])def printUnivList(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.cn/zuihaodaxuepaiming2019.html' html = getHTMLText(url) fillUnivList(uinfo, html) printUnivList(uinfo, 20)if __name__ == "__main__": main()
本案例的核心逻辑是从指定url获取大学排名页面内容,提取排名、学校名称和总分信息,存储到数据结构中,最后按格式输出结果。代码逻辑清晰,注重数据处理的细节,确保爬取的内容准确无误。
转载地址:http://bsgh.baihongyu.com/