zoukankan      html  css  js  c++  java
  • python之中国大学爬虫

     1 #!/usr/bin/env python3
     2 #-*- coding:utf-8 -*-
     3 ############################
     4 #File Name: zuihaodaxuepaiming.py
     5 #Author: frank
     6 #Mail: frank0903@aliyun.com
     7 #Created Time:2018-05-15 21:45:55
     8 ############################
     9 
    10 import requests
    11 from bs4 import BeautifulSoup
    12 
    13 
    14 #1. 获取html页面的内容
    15 def getHTMLText(url):
    16     try:
    17         r = requests.get(url)
    18         r.raise_for_status()
    19         #r.encoding = r.apparent_encoding
    20         r.encoding = 'utf-8'
    21         return r.text
    22 
    23     except:
    24         print("爬取异常")
    25         return ""
    26     
    27 #2. 从html页面内容中爬取大学排名信息, (排名,学校名称,总分)
    28 def getUnivInfo(uLst, html):
    29     soup = BeautifulSoup(html, "lxml")
    30     #获取排名中的大学的数量
    31     print(len(soup.tbody.find_all("tr", recursive=False)))
    32     #列出tbody的子节点
    33     #for tag in soup.tbody.find_all('tr', recursive=False):
    34     #    #print("name:{},type:{}".format(tag.name, type(tag)))
    35     #    print(tag.td.string)
    36     for tr in soup.tbody.find_all('tr', recursive=False,limit=1):
    37         tds = tr('td')
    38         #print(tr.prettify())
    39         #print(tds)
    40         #print(tds[0].string,tds[1].string, tds[3].string)
    41         uLst.append([tds[0].string,tds[1].string, tds[3].string])
    42 
    43 #3. 显示排名信息
    44 #def printUnivInfo(uLst, num):
    45 #    print("{0:^10}	{1:{3}^10}	{2:^10}".format("排名","学校名称","总分",chr(12288)))
    46 #    for uni in uLst[0:num]:
    47 #        print("{0:^10}	{1:{3}^10}	{2:^10}".format(uni[0],uni[1],uni[2],chr(12288)))
    48 
    49 def printUnivInfo(uLst, num):
    50     ptstr = "{0:^10}	{1:{3}^10}	{2:^10}"
    51     print(ptstr.format("排名","学校名称","总分",chr(12288)))
    52     for uni in uLst[0:num]:
    53         print(ptstr.format(uni[0],uni[1],uni[2],chr(12288))) #中文字符的空格填充 chr(12288)
    54 
    55 def main():
    56     url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html"
    57     uLst = []
    58     html = getHTMLText(url)
    59     #print(html)
    60     print("getHTMLText")
    61     getUnivInfo(uLst, html)
    62     print("getUnivInfo")
    63     printUnivInfo(uLst, 10)
    64 
    65 main()

    该实例主要是针对 requests 和 BeautifulSoup的应用。

  • 相关阅读:
    es6里面的arr方法
    for循环比较
    window.location各属性的值
    浏览器的缓存机制
    es6中的双箭头函数
    前端开发模拟数据------webpack-api-mocker
    对象的深拷贝和浅拷贝
    Web应用程序的安全问题
    this指向问题
    postman使用篇最全整理
  • 原文地址:https://www.cnblogs.com/black-mamba/p/9043641.html
Copyright © 2011-2022 走看看