python爬虫 学习1

 1 import requests
 2 from bs4 import BeautifulSoup
 3 import bs4
 4 def gethtmltext(url):     #获取html内容,利用try和except框架可以抛出异常
 5     try:
 6         r = requests.get(url,timeout=30)   #获取url,时间限制为30秒
 7         r.raise_for_status()               #检查连接状态是否为200,即正常连接,如果为否则抛出except异常
 8         r.encoding=r.apparent_encoding     #确定编码
 9         return r.text                      #返回为html的内容
10     except: 
11         return ''
12         
13 
14 def fillunivlist(ulist,html):      #解析html内容,提取所需数据  ulist是一个空列表,用来存取解析出来的所需数据
15     soup = BeautifulSoup(html,'html.parser')    #利用beautifulsoup的html.parser来解析r.text
16     for tr in soup.find('tbody').children:      #通过分析发现所需排序,学校名称,总分存在于tbody标签类的tr标签中的td标签 .children是查找tbody的子类
17         if isinstance(tr,bs4.element.Tag):      #因为tr标签包含其他string,而我们所需要的只是bs4.element.Tag标签类型,所以用isinstance(obj,class)作一个判断
18             tds = tr('td')     #若判断为真则 执行查找tr标签中的td标签,并赋值给tds
19             ulist.append([tds[0].string,tds[1].string,tds[2].string])    #将tds的数据追加给ulist
20 
21 def printunivlist(ulist,num):       #格式化输出内容
22     print('{:^10}\t{:^6}\t{:^10}'.format('排名','学校名称','总分'))
23     for i in range(num):
24         u=ulist[i]
25         print('{:^10}\t{:^6}\t{:^10}'.format(u[0],u[1],u[2]))
26         
27     
28 def main():    #定义一个主函数,实现具体抓取并输出
29     uinfo = []
30     url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
31     html = gethtmltext(url)
32     fillunivlist(uinfo,html)
33     printunivlist(uinfo,20)
34                 
35 main()

效果图如下:

猜你喜欢

转载自www.cnblogs.com/dataxiong/p/11711786.html