第十七章 python 网络爬虫开发

17.1 初识网络爬虫
    按指定规则自动浏览和抓取网络中的信息。
    
    17.1.1 网络爬虫简述
    
    17.1.2 网络爬虫的分类
        a, 通用网络爬虫
            以叫全网爬虫,爬的范围大,对爬行速度和存储空间要求高,
            刷新的页面多,通常用并行工作。
            通用网络,主要是由初始化URL集合,URL列表,页面模块模块,
            页面分析模块, 链接过滤模块。
        b,  聚焦网络爬虫
            也叫主题爬虫,应用在对特定的信息的爬取
    
        c,  增量式网络爬虫
            就是增量式更新,只对发生变换的网页爬取信息。
        
        d,  深层网络爬虫
            web页面分,分表层页面,深层页面,
            表层页面,不需要提交表单,使用静态的超链接。
            深层页面,是指不能由静态的超连接获取的。
            深层,主要通过6个基本功能的模块
                (爬虫控制器, 解析器, 表单分析器,
                表单分析器, 响应分析器, LVS控制器)

    17.1.3 网络爬虫的基本原理
        a, 获取初始URL
        b, 爬取页面获取新的URL
        c, 抽取新的URl放入URL队列中
        d, 读取新的URL进行网页下载
        e, 是否满足停止条件,是结束,否到B,
    


17.2 网络爬虫的常用技术
    
    17.2.1 python的网络请求
        介绍PYhton的实现HTTP网络请求的觉的3种方式:urllib, urllib3, requests
    
        a, urllib模块
            get请求方式
                import urllib.request
                response = urllib.request.urlopen('http://www.baidu.com')
                html = response.read()
                print(html)

            
            
            post请求方式
                import urllib.parse
                import urllib.request
                data = bytes(urllib.parse.urlencode({'word':'hello'}), encoding='utf-8')
                response = urllib.request.urlopen('http://httpbin.org/post', data=data)
                html = response.read()
                print(html)
                
        b, rullib3模块
            
            get请求方式
                import urllib3
                http = urllib3.PoolManager()
                response = http.request('GET','http://www.baidu.com')
                print(response.data)
                
            post请求方式
                import urllib3
                http = urllib3.PoolManager()
                response = http.request('POST', 'http://httpbin.org/post', fields={'word':'hello'})
                print(response.data)
            
        c, requests模块
            get请求方式
                import requests
                response = requests.get('http://www.baidu.com')
                print(response.status_code)
                print(response.url)
                print(response.headers)
                print(response.cookies)
                print(response.text)
                print(response.content)
                
            post请求方式
                import requests
                data = {'word':'hello'}
                response = requests.post('http://httpbin.org//post', data = data)
                print(response.content)
                print(response.status_code)


    17.2.2 请求Headers处理
        火狐,进入网站,然后,按ctrl+shift+E,进入网络监视器,打开第一个GET请求,
        找到第一个get请求,找到第一个use-agent,进入如下操作        

        import requests
        string = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0'
        header = {'rser-agent':string}
        url = 'https://www.baidu.com/'
        response = requests.get(url, headers = header)
        res = response.content.decode('utf-8')
        res = res.replace('<','\n<')
        print(res)
    
    17.2.3 网络超时
        import requests

        from requests.exceptions import ReadTimeout, HTTPError, RequestException

        for a in range(0, 50):
            try:
                response = requests.get('http://www.baidu.com', timeout=0.05)
                print(response.status_code)
            except ReadTimeout as e:
                print("超时异常  :  ", e)
            # 浏览器无法连接到服务器而增加出来的错误提示
            except HTTPError as e:
                print("HTTP异常  : ", e)

            # 请求错误
            # https: // zhidao.baidu.com / question / 240298462.html
            except RequestException as e:
                print("requests 错误  :  ", e)
        
        
    17.2.4 代理服务
        import requests
        proxy_1 = {'http' : '123.249.28.107:3128', "https" : '114.95.227.102:8118'}

        # 获取免费代理IP,     https://www.xicidaili.com/?t=253

        response = requests.get('http://www.baidu.com', proxies = proxy_1)
        print(response.content)

    17.2.5 HTTP解析之BeautifulSoup
        a, BeautifelSoup的安装
            pip install bs4            # 从HTTP,XML 中提取数据的python库
                        lxml        # lxml解析器
                        html5lib    # html解析器
            
        
        b, BeautifelSoup的使用
        
            from bs4 import BeautifulSoup
            import requests

            response = requests.get('https://tieba.baidu.com/index.html')

            string = response.content.decode('utf-8')
            string = string.replace("<", "\n<")
            soup = BeautifulSoup(string, 'html5lib')
            print(soup)


17.3 网络爬虫开发常用框架
    17.3.1 Scrapy爬虫框架(免费开源的)
        官网地址:https://scrapy.org
        
        
    17.3.2 Crawley 爬虫框架
    
    17.3.3 PySpider 爬虫框架
    
    
    
17.4 实战项目:快手爬票

    17.4.1 快手爬票概述
        
        
    17.4.2 搭建QT环境
    


17.4 实战项目 :快手爬票
    
    17.4.2 搭建QT环境
        第一步: 安装QT软件;
        第二步: 需要python的 PyQt5 和 PyQt5-tools
        第三步: 在pytharm 中扩展工具

            用来启动QT的扩展工具
            name:      QTDesigner
            program:  C:\Users\juliciy\AppData\Local\Programs\Python\Python36\Lib\site-packages\pyqt5_tools\designer.exe
            working dir: $FileDir$

            用来转换UI到PY的工具
            name:     PyUIC
            program:  C:\Users\juliciy\AppData\Local\Programs\Python\Python36\python.exe
            arguments:-m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py
            working dir: $FileDir$
            
            用来处理QT传过来的图片格式qrc 的
            name:  qrcTory
            program: C:\Users\juliciy\AppData\Local\Programs\Python\Python36\Scripts\pyrcc5.exe
            arguments: $FileName$ -o $FileNameWithoutExtension$_rc.py
            working dir: $FileDir$

        第四步:在QT工具中调好窗口,设置图片,记得添加时要选择添加样式,再背景图片;
        
        第五步:导入转换即可
        
        第六步: 在转换的代码后添加如下代码,即可测试显示
            import sys
            def show_MainWindow():
                app = QtWidgets.QApplication(sys.argv)  # 首先必须实例化QApplication类,作为GUI主程序入口
                MainWindow = QtWidgets.QMainWindow()  # 实例化QtWidgets.QMainWindow类,创建自带menu的窗体类型QMainWindow
                ui = Ui_MainWindow()  # 实例UI类
                ui.setupUi(MainWindow)  # 设置窗体UI
                MainWindow.show()  # 显示窗体
                sys.exit(app.exec_())  # 当来自操作系统的分发事件指派调用窗口时,
                # 应用程序开启主循环(mainloop)过程,
                # 当窗口创建完成,需要结束主循环过程,
                # 这时候呼叫sys.exit()方法来,结束主循环过程退出,
                # 并且释放内存。为什么用app.exec_()而不是app.exec()?
                # 因为exec是python系统默认关键字,为了以示区别,所以写成exec_
            import imge_rc

            if __name__ == "__main__":
                show_MainWindow()  # 调用显示窗体的方法

            
        
            
    
    
            
        


                                                                       

                
            

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python是当今最受欢迎的编程语言之一,其应用范围广泛,从网络编程到数据科学。Python项目开发案例集锦22章包含了各种类型的Python项目,涵盖了Web开发、数据科学和机器学习等领域,通过这些项目,程序员可以学习Python编程语言的各种用法和技巧。 这些Python项目案例大部分都是实用性很强且直观易懂的,比如基于Flask框架的网页开发项目、使用Numpy、Pandas和Matplotlib等数据科学库的数据分析与可视化项目、基于Tensorflow的机器学习项目等。这些项目都是从实际的应用需求出发,结合程序员的实际开发经验而设计,给初学者提供了很好的学习素材。 Python项目开发案例集锦22章包含了成百上千条代码行,结果是程序员可以学习并理解如何从头开始构建一个项目,如何处理Bug和优化Python代码,以及如何从中学到Python语言的实际用例和技巧。 最重要的是,这些Python项目案例不仅注重了实际的应用价值,而且特别重视程序员的学习体验和学习效果,通过网页可视化、数据可视化、分布式处理等一系列技术手段,给程序员带来不同的视觉感受和开发体验。 在一个Python编程领域中,Python项目开发案例集锦22章需要尝试学习的程序员有很多途径去选择。 ### 回答2: 《Python项目开发案例集锦22章》是一本关于Python编程语言在实际项目中应用的经验分享书籍。本书从实际项目需求出发,在讲解Python相关技术的同时,也向读者分享了作者在项目实践中的一些经验和思考。 本书的22个章节分别介绍了不同类型的Python项目应用,包括数据处理、Web开发网络编程、自然语言处理等。作者不仅介绍了项目的实现思路和代码实现,还提供了相关技术文档和工具的介绍。比如,第一章介绍了如何利用Python实现站点数据抓取,深入讲解了Python的标准库以及第三方库requests、BeautifulSoup和pandas的使用。又比如,第七章介绍了如何利用Python编写网络爬虫爬取网页信息,讲解了如何应对网站反爬虫机制的问题。 总的来说,本书对于希望在Python项目中应用自如的读者来说是一本非常实用的书籍。作者并不仅局限于技术问题的讲解,而是从一个完整的项目出发,介绍了项目实现的步骤和思路,有助于读者更好地理解Python的应用。对于Python初学者来说,本书也提供了许多具体的案例和代码示例,可以作为入门参考书籍。 ### 回答3: Python项目开发案例集锦22章包含了十几个实际开发案例,这些案例涉及了不同领域和应用场景,如基于Python实现的数据分析、自然语言处理、图像识别、机器学习等等。这些案例都是真实的应用,展示了Python作为一门通用编程语言的强大功能和应用能力。 其中,数据分析的案例比较常见,比如基于Python实现的股票分析系统,通过数据的采集、处理和分析,给出了股票的行情分析和建议。另外还有文本数据分析的案例,比如基于Python的中文文本情感分析,通过对中文文本数据的分析,判断文本的情感倾向,用于舆情分析和情感识别。 在自然语言处理方面,Python也有着广泛的应用。例如,基于Python的文本相似度计算,通过对两段文本进行分词、向量化和相似度计算,得到文本的相似度,用于文本分类、信息检索等方面。 此外,还有图像识别的案例,比如基于Python的手写数字识别系统,通过卷积神经网络(CNN)实现对手写数字的识别,用于验证码识别、手写笔迹识别等方面。此外,Python还有着机器学习、人工智能等应用,如基于Python的k-means聚类算法、基于Python的机器翻译等等。 综上所述,Python项目开发案例集锦22章展示了Python在不同领域和应用场景下的应用能力和解决问题的能力。对于Python开发者和数据科学家来说,这些案例是学习和实践的宝贵资源,有利于提高编程和数据分析能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值