中国大学排名定向爬虫--解析

    技术2025-12-08  10

    需要爬取的网页:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html

    右键单击 -> 查看网页源代码:

    找到需要爬取的信息的位置:(可以Ctrl+F  搜索 "清华大学"  快速找到位置)

    自诩观察网页源代码可以发现:

    所有的大学信息都放在了 <tbody> 标签下 每个大学信息都放在了对应的 <tr> 标签下 每个大学的每一条信息都放在了对应的 <td> 标签中 

    打开网页:http://www.zuihaodaxue.cn/robots.txt  检查定向爬虫的可行性,404证明定性爬虫没有被限制

    编写代码:

    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#返回text except: return ""#异常返回 空 #提取出html代码中的大学信息存储到ulist列表中 def fillUnivList(ulist,html): soup=BeautifulSoup(html,"html.parser")#解析 html for tr in soup.find('tbody').children:#遍历tbody的孩子标签 每个tr代表一所大学 if isinstance(tr,bs4.element.Tag): #过滤掉非标签类型的元素 tds=tr('td')#等价于 tr.find_all('td') #存储所有的td标签的内容 ulist.append([tds[0].string,tds[1].string,tds[3].string])#排名 名称 得分(tds[3]) 加入到列表中 #输出ulist列表中前num个大学信息 def printUnivList(ulist,num): tplt="{0:^10}\t{1:^10}\t{2:^10}"#输出模板变量 print(tplt.format("排名","学校名称","总分",chr(12288)))#print的format格式化输出,并填充中文空格,使得界面更加美观 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/zuihaodaxuepaiming2016.html"#将要爬取的url #调用编写好的功能函数 html=getHTMLText(url) fillUnivList(uinfo,html) printUnivList(uinfo,20) main()#调用主函数

    程序运行结果:

    参考课程:中国大学MOOC_北京理工大学_Python网络爬虫与信息提取

    Processed: 0.013, SQL: 9