• 网络爬虫的提取爬虫实例


    0x00 中国最好大学排名的爬取


    我们通过上海交通大学设计研发的最好大学网来进行数据的抓取

    这是本次爬取的url:软科中国最好大学排名

    功能描述:

      输入目标url

      输出大学排名信息(排名、学校、总分)

      技术路线:requests-bs4

      定向爬取:只对该url进行爬取

    分析:

      查看网页源代码,为了快速定位,可以直接在源代码页面搜索“清华大学”,就能迅速定位我们想要的代码段,确定爬取计划可行。

    接下来,我们查看根目录下的robots.txt文件,确认爬取行为的合法性,经过实践,该网站根目录下并不存在robots.txt文件,因此该网站没有对爬虫进行限制。

    程序结构设计:

      步骤1:从url中获取网页内容

      步骤2:提取网页中的信息到合适的数据结构

      步骤3:利用数据结构展示并输出结果

    同时介绍一下print()函数中format方法,format后面的内容会按顺序替换相应的大括号

    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):     #检测tr标签,若不是Tag类型则过滤
                if len(tr('td') ) == 7:
                    tds = tr('td')                      #将所有td标签存为列表类型
                    ulist.append([tds[0].string, tds[3].string, tds[6].string])     #将我们需要的td标签的内容存入列表
    
    def printUnivList(ulist, num):
        print("{:^10}	{:^6}	{:^10}".format("排名", "学校名称", "总分"))
        for i in range(num):
            u = ulist[i]
            print("{:^10}	{:^6}	{:^10}".format(u[0], u[1], u[2]))
    
    def main():
        uinfo = []
        url = "http://www.zuihaodaxue.com/BCSR/wangluokongjiananquan2018.html"
        html = getHTMLText(url)
        fillUnivList(uinfo, html)
        printUnivList(uinfo, 10)
    
    main()
  • 相关阅读:
    nginx配置ssl验证
    腾讯云服务器、nginx部署loopback
    mongo删除指定字段,可多个字段同时删除
    前端axios下载excel无法获取header所有字段问题
    本机是wifi,虚拟机无法连接外网问题
    import文件时 ~/ 不识别问题(react)
    监听F5刷新,添加路由前缀
    Django学习笔记(13)model_to_dict 的使用
    Django学习笔记(12)基于前后端分离模式-添加用例接口实现
    Django学习笔记(11)url管理之include
  • 原文地址:https://www.cnblogs.com/Ragd0ll/p/10246393.html
Copyright © 2020-2023  润新知