目 录
第1章 Python介绍
1.1 发展背景
1.2 Python 简介
1.3 Python 特点
1.4 Python缺点
1.5 Python主要应用领域
第2章 爬虫技术
2.1 基于Python的网络爬虫技术
2.1.1 网络爬虫技术的概述
2.1.2 网络爬虫分类
2.1.3 网络爬虫架构
2.1.4 网络爬虫架构流程
2.1.5 基于Python的网络爬虫分析
2.2 模拟登录
2.2.1 模拟登录原理
2.2.2 模拟登录分析
第3章 Python实现简单爬虫实践
结论
第1章 Python介绍
1.1 发展背景
随着人工智能技术的兴起,传统的数据分析技术已经很难满足新技术的需求,取而代之的是大数据时代的数据分析技术。Python作为编程语言,以高度的封装性、灵活性、丰富的第三库资源,在数据分析领域中占据重要的地位。
1.2 Python 简介
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python具有比其他语言更有特色语法结构, 如下所示:
Python 是一种解释型语言: 这意味着开发过程中没 有了编译这个环节。类似于PHP和Perl语言。
Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是面向对象语言: 这意味着Python支持面向对 象的风格或代码封装在对象的编程技术。
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
1.3 Python 特点
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:Python代码定义的更清晰。
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.数据库:Python提供所有主要的商业数据库的接口。
9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
1.4 Python缺点
速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些;
代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的;
不容易维护,因为Python是一种动态类型语言,Python应用程序越大越复杂,越难以维护,因为错误将难以追踪和修复,因此需要经验和洞察才能知道如何设计代码或编写单元测试以简化可维护性。
线程不能利用多CPU问题,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。
1.5 Python主要应用领域
(1)云计算:Python具有模块化和灵活性,而构建云计算的平台的IasS服务的OpenStack就是采用Python的,云计算的其他服务也都是在IasS服务之上的;
(2)WEB开发: Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django。
(3)网络编程:Python提供了丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet, BitTorrent和Google都在广泛地使用它
(4)爬虫开发:在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。
(5)计算与数据分析:随着NumPy,SciPy,Matplotlib等众多程序库的开发和完善,Python越来越适合于做科学计算和数据分析。它不仅支持各种数学运算,还可以绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python比Matlab所采用的脚本语言的应用范围更广泛,可以处理更多类型的文件和数据。
(6)人工智能:当前最热工资最高的IT工作就是从事人工智能领域的工程师。Python在人工智能大范畴领域内的机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。最流行的神经网络框架如Facebook的PyTorch和Google的TensorFlow都采用了Python语言。
(7)金融分析:金融分析包含金融知识和Python相关模块的学习,学习内容囊括Numpy\Pandas\Scipy数据分析模块等,以及常见金融分析策略如“双均线”、“周规则交易”、“羊驼策略”、“Dual Thrust 交易策略”等。
(8)图形GUI: PyQT, WxPython,TkInter
(9)自动化运维:Python是一门综合性的语言,能满足绝大部分自动化运维需求,前端和后端都可以做,从事该领域,应从设计层面、框架选择、灵活性、扩展性、故障处理、以及如何优化等层面进行学习。
(10)科学运算:Python是一门很适合做科学计算的编程语言,97年开始,NASA就大量使用Python进行各种复杂的科学运算,随着NumPy、SciPy、Matplotlib、Enthought librarys等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量的2D和3D图像。
(11)游戏开发:很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小,然而Python则支持更多的特性和数据类型。
第2章 爬虫技术
Python是一种”胶水“语言, 拥有丰富强大的库, 能把其他语言的各种模块轻松地联结在一起, 用Python模拟浏览器, 进行爬虫操作, 接口简单, 易于操作。
2.1 基于Python的网络爬虫技术
当今时代是大数据的时代, 各个领域都离不开数据的支持。快速搜索数据并且充分利用数据信息, 成为了一个巨大的挑战。为了解决这些难题, 网络爬虫技术应运而生。使用网络爬虫技术可以快速提取数据。如QQ空间爬虫一天可抓取400万条日志、说说、个人信息等数据;知乎爬虫爬取各种话题下的优质答案;淘宝商品比价定向爬虫爬取商品、评论及销售数据。
2.1.1 网络爬虫技术的概述
网络爬虫又称网络蜘蛛, 或者网络机器人。是一种能够按照预定的规则自动获取网页内容的程序脚本。根据实现的技术和结构可以分为通用型、聚焦型、增量式、深层网络爬虫等类型。换句话来说, 它可以根据网页的链接地址自动获取网页内容。
基本流程如下:
(1) 向目标网站发起请求:通过http库向目标发起请求, 即发送一个Request, 请求可包含额外的headers等信息, 然后等待服务器响应。
(2) 获取响应的内容:如果服务器能正常响应, 会得到一个Response, Response的内容就是所要获取的页面内容, 类型可能有HTML, Json字符串, 二进制数据 (如图片、视频) 等类型。
(3) 内容解析:把提取出来的数据进行结构化的存储, 如字典、文本, 也可以保存至数据库, 或者保存成特定格式的文件。论文利用beautiful soup对得到的数据进行解析, 得到借阅相关信息。
2.1.2 网络爬虫分类
网络爬虫是一种按照一定的规则, 自动地抓取万维网信息的程序或者脚本。网络爬虫按照系统结构和实现技术大致可以分为以下几种类型:
(1) 通用型网络爬虫。此类爬虫主要应用于搜索引擎, 爬行范围和数量巨大, 对于爬行速度和存储空间要求较高, 具有较强的应用价值。
(2) 聚焦型网络爬虫。选择性地爬行预先定义好的需求信息, 极大地节省了硬件和网络资源, 满足特定人员的特定需求。
(3) 增量型网络爬虫。只在产生新的页面或者页面发生变化时才会进行爬行工作, 有效减少数据下载量, 减小时间和空间上的耗费。
(4) 深度网络爬虫。需要注册登录或是提交相应表单才能获取web页面爬行数据。
2.1.3 网络爬虫架构
网络爬虫架构主要由三个部分组成:网络爬虫调度端 (负责开启网络爬虫主程序) ;网络爬虫主程序;目标数据 (抓取有价值数据) 。网络爬虫主程序分为以下3个部分:
(1) Url管理器:管理Url, 包括已经爬取过的Url和待爬的Url。
(2) 网页下载器:根据Url地址, 将网页下载保存到本地, 存储为字符串。
(3) 网页解析器:将存储的字符串中有价值的数据进行解析
2.1.4 网络爬虫架构流程
爬虫系统调度段询问Url管理器, 从一个Url或者多个Url开始, 将他们放在“待抓取”的Url队列中, 系统按照一定的顺序从队列中取出Url地址, 将其传送给网页下载器并下载网页内容, 调度端接收到网页下载的内容后, 将网页内容发送给网页解析器, 抓取想要的内容。在抓取的过程中, 爬虫还会碰到Url, 在已经下载的Url队列中检查, 如果没有被抓取过, 确认是新的Url, 则放到Url队列末尾, 等待抓取。上面过程是循环往复进行的, 直到“待抓取”的Url队列为空, 停止抓取。
简单爬虫框架
URL管理器:管理待抓取URL集合和已抓取URL集合,作用:防止重复抓取、防止循环抓取
网页下载器:将互联网上URL对应的网页下载到本地的工具
2.1.5 基于Python的网络爬虫分析
(一)Url管理模块
Url管理模块的作用是管理Url, 包括已经被抓取的Url集合和还未被抓取的Url集合。Url管理模块可以有效预防重复抓取循环抓取的问题。
Python中实现网址管理有三种途径:
(1) 存储在内存中, 针对于Url数据较少的情况。在Python中用Set () 集合加以实现, Set () 可以消除重复数据, 避免重复抓取的问题。
(2) 存储在关系数据库, 实现永久存储。建立Url表, 该表中有两个字段, 一个字段是Url地址, 另一个字段用来表示Url是否被抓取。
(3) 存储在缓存数据库redis中, 针对于Url数据较多的情况下。也可以用Set () 集合来实现, 来存取“待爬”的Url地址和“已爬”的Url地址。
(二)网页解析器
网页解析器用来从网页中提取从最初想要的数据。实则上提取的是两部分: (1) Url列表; (2) 目标数据。
Python中的网页解析器有两种类型:
(1) 利用正则表达式。正则表达式将网页当作字符串来处理, 只适用于简单的网页。一般网页较为复杂时, 不采用此类方法。
(2) 基于网页的DOM结构。DOM树是一种树形标签结构。网页解析器会将HTML文档当成DOM树, 对其进行上下级结构的遍历来提取有用信息。使用树形结构可以对网页中的具体信息来进行定位, 定位到具体的某个节点、属性等。其中Beautiful Soup解析器功能强大, 更为盛行。Beautiful Soup利用find_all () 和find () 方法来搜索节点, find_all () 可以查找所有符合查询条件的标签节点, 并返回一个列表。find () 方法查找符合查询条件的第一个标签节点。用这两种方法搜索节点, 提取有价值信息。
网页解析器:从网页中提取出有价值数据的工具python有哪几种网页解析器:
结构化解析-DOM:
beautiful Soup-语法
ex:(href:超链接)
2.2 模拟登录
2.2.1 模拟登录原理
模拟登录是利用浏览器的Cookie。Cookie是网站为了辨别用户身份而保存在本地的文件, 可以用来判断登录的用户是否合法。
当用户通过浏览器登录网站时, 往往不是直接就可以读取到所需要的内容, 还需输入用户名, 密码, 有些网站还有验证码的限制, 这些都输入无误后, 提交给服务器才会返回一个包含数据的网页,
2.2.2 模拟登录分析
(1) Header构造
Header是一个字典文件, 里面保存了user-agen等信息, 模拟登录时带上header参数, 这样目标网站会误以为本程序是一个浏览器而并非爬虫, 这样程序就会返回正确的信息, 而不会被目标网站限制。
(2) 传递参数模拟登录并读取信息
第3章 Python实现简单爬虫实践
新浪新闻首页爬虫实践
(1)抓取前的分析,以Chrome为例,抓取前的分析步骤如图
①按F12进入到开发者工具;
②点击Network;
③刷新页面;(按F5)
④找到Doc;
⑤找到左边Name这一栏的第一个(需要爬去的链接90%的情况都是第一个);
⑥点击右边的Headers;
⑦找到请求的URL和请求方式。
(2)使用jupyter来抓取网页并打印在浏览器中,再按Ctrl-F查找对应的内容,以确定我们要爬去的内容在该网页中。
(3)用BeautifulSoup4剖析网页元素
(4)BeautifulSoup基础操作
①使用select找出含有h1标签的元素
②使用select找出含有a的标签
③使用select找出所有id为title的元素(id前面需要加#)
④使用select找出所有class为link的元素(class前面需要加.)
⑤使用select找出所有a tag的href链接
结论
Python作为时下流行的编程语言,以高度的封装性、灵活性、丰富的第三库资源,在数据分析领域中占据着重要的地位。python的应用领域广泛,包括系统运维、科学计算、人工智能、网络编程(如搜索引擎、爬虫、服务器编程)、web开发、云计算系统、图形化、教育等。
在大数据时代, 网络爬虫技术可以有效准确地抓取目标数据, 可以为我们节省大量的资源, 对信息检索起着十分重要的作用。基于Python的网络爬虫技术, 具有很高的前瞻性, 有一定的研究价值。即上部分提到的http Response结果。这个结果中就包含Cookie, 后续的访问就可以利用它来实现模拟登录。
在当今数据大爆发的时代, 通过爬虫快速的从互联网中爬行所需要的信息显得格外重要。在数据爬虫方面,利用rullib、requests、BeautifulSoup、re、Scrapy等模块进行爬取想要的网站资料,如搜房、淘宝、京东、微信、今日头条、中国知网、新浪、贴吧、金融界、电影论坛等等;Python在爬虫应用中充当了重要的角色。丰富的第三方库让开发变得简单易用。实例证明应用Python语言可以方便地实现深度网络爬虫和聚焦型网络爬虫相结合的爬虫程序, 将网络中的大数据进行整合, 让大数据更方便的服务于其他应用程序。
Python数据分析
最新推荐文章于 2021-09-14 21:58:06 发布