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

定向爬虫--针对固定网站的网页进行爬虫

  1. 目标网站--http://www.zuihaodaxue.cn
    具体网页:http://www.zuihaodaxue.cn/shengyuanzhiliangpaiming2017.html
    内容:软科中国最好大学排名-生源质量排名2017
  2. 查看源代码检查格式
  3. 查看该网站的robots协议
    在原网址的基础上添加:http://www.zuihaodaxue.cn/robots.txt
    显示网页不存在:即不存在robots.txt协议
  4. 程序设计


    定向爬虫--中国大学排名_第1张图片
    程序设计
  5. 设计代码如下:
import requests
from bs4 import BeautifulSoup  # 引用bs4库中的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
    except:
        return ""


def fill_univlist(ulist, html):
    soup = BeautifulSoup(html, 'html.parser')
    for tr in soup.find("tbody").children:
        if isinstance(tr, bs4.element.Tag):
            # 检测出tbody儿子中的标签类,过滤掉非标签类
            tds = tr.find('td')
            # tds = tr('td')
            ulist.append(
                [tds.contents[0].string, tds.contents[1].string, tds.contents[2].string, tds.contents[3].string])


def print_univlist(ulist, num):
    tplt = "{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}"
    print(tplt.format("排名", "学校名称", "所在地", "总分", chr(12288)))
    for i in range(num):
        u = ulist[i]
        print(tplt.format(u[0], u[1], u[2], u[3]), chr(12288))


def main():
    uinfo = []
    url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html"
    html = getHTMLText(url)
    fill_univlist(uinfo, html)
    print_univlist(uinfo, 20)

main()

结果显示:


定向爬虫--中国大学排名_第2张图片
2017大学排名.PNG

python中格式化输出太难看,需改进。
另所书写的代码需要时刻与网页内容保持更新,不然很难适用

你可能感兴趣的:(定向爬虫--中国大学排名)