目标网站:http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html
目的:爬取目标网站上中国大学的排名
代码如下:
1 import requests#引入requests库 2 from bs4 import BeautifulSoup 3 import bs4#引入bs4库 4 def getHTMLText(url):#获得网页内容的函数 5 try: 6 r=requests.get(url,timeout=30)#得到网页内容 7 r.raise_for_status()#来产生异常信息,在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try-except进行异常处理 8 r.encoding=r.apparent_encoding#修改编码 9 return r.text#返回文本类 10 except: 11 return "" 12 13 def fillUnivList(ulist,html):#将页面放到一个列表中的函数 14 soup = BeautifulSoup(html,"html.parser")#煲汤.... 15 for tr in soup.find('tbody').children:#遍历查找tbody标签 16 if isinstance(tr,bs4.element.Tag):#类型判断,如果不是tag类型,将被过滤 17 tds = tr('td')#将td标签存为一个列表类型tds 18 ulist.append([tds[0].string,tds[1].string,tds[2].string])#增加对应字段 19 20 21 def printUnivList(ulist,num):#输出打印函数,格式化输出 22 print("{:^10} {:^6} {:^10}".format("排名","学校名称","总分"))#打印表头 23 for i in range(num):#采用循环实现 24 u= ulist[i] 25 print("{:^10} {:^6} {:^10}".format(u[0],u[1],u[2])) 26 27 def writetxt(ulist,num):#储存到txt文件,E盘下自动生成中国大学排名的txt文件 28 with open('E:中国大学排名.txt','a',encoding='utf-8') as f: 29 for i in range(num): 30 u= ulist[i] 31 f.write("{:^10} {:^6} {:^10}".format(u[0],u[1],u[2])) 32 f.write(' ') 33 f.close() 34 35 36 def main():#主函数 37 uinfo = []#列表 38 url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html'#给定链接 39 html=getHTMLText(url) 40 fillUnivList(uinfo,html) 41 printUnivList(uinfo,310) 42 writetxt(uinfo,310) 43 main()
结果如下:
第一次写的爬虫,留作纪念