python——爬取网页定向爬虫(6)

此生再无相见时 提交于 2020-02-06 07:15:42

定向爬虫

定义:定向爬虫可以精准的获取目标站点信息。仅对输入URL进行爬取,不拓展爬取。

【实例练习】

【中国的大学排名爬取】
1 查看网页是否对爬虫有限制
1.查看 robots.txt
在这里插入图片描述
无robots.txt文件说明无爬虫限制
2.查看原网页
在这里插入图片描述
要提取的信息被封装在html内
2.程序的结构设计
步骤1:从网络上获取大学排名网页内容
步骤2:提取网页内容中信息到合适的数据结构(二维数据)
步骤3:利用数据结构展示并输出结果
在这里插入图片描述
属于二维数据

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
    except:
        return ""
    
def fillUnivList(ulist,html): #提取网页内容中的信息到合适的数据结构
    soup=BeautifulSoup(html,"html.parser")
    for tr in soup.find('tbody').children:#所有大学的信息都封装在tbody的标签下
        if isinstance(tr,bs4.element.Tag):#因为标签中含有字符串类型,需要过滤掉除了标签信息的其他类型
            tds=tr('td')#列表类型tds
            ulist.append([tds[0].string,tds[1].string,tds[2].string])#把所需的标签信息存入ulist
    print(ulist)

def printUnivList(ulist,num): #利用数据结构展示并输出num个结果
    print("{:^10}\t{:^6}\t{:^10}".format("排名","学校名称","总分"))
    for i in range(num):
        u=ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))


def main():
    uinfo=[]#存入大学信息
    url="http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html"
    html=getHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivList(uinfo,20)
main()

在这里插入图片描述
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!