百度大牛带你学习Python爬取,解析网页、存储数据的三大爬虫技术
前言
爬虫程序是DT (Data Technology,数据技术)收集信息的基础,程序员爬取目标网站的资料后,就可以分析和建立应用了。我们关心的是科技如何给大家带来实效,进而实现目标和理想,不能应用的技术称为魔术,只能用于表演。我们十分关注读者能否把握爬虫概念,所以相关的技术结合不同的实例讲解,希望能指导读者完成整个数据采集的流程。
Python是-一个简单、有效的语言,爬虫所需的获取、存储、整理等流程都可以使用Python 系统地实现。此外,绝大部分计算机也可以直接使用Python语言或简单地安装Python系统,相信读者一定 能轻松地把Python作为爬虫的主要技术。
动其心者,当具有大本大源
DT的核心是从信息的源头去理解和分析,以做出能打动对方的行动决策方案。由谷歌搜索到现在的大数据时代,爬虫技术的重要性和广泛性一直很突出。程序员理解了信息的获取、存储和整理各方面的基本关系,才有可能系统地收集和应用不同源头和千变万化的网站信息。
自强不息
互联网科技不断更新和进步,网站信息也随之不断改变。爬虫的乐趣在于如何一直高效率、持续不断地从日新月异的网站中获取信息。另外,程序员要不断学习新技术,自我提高,这样在爬虫的过程中才能够理解互联网的运作和结构。最后,感谢好友唐松给予我一.起创作这本书的机会,让我可以分享爬虫技术和当中的乐趣。
Python行业薪资
如何阅读?
使用Python 编写网络爬虫程序获取互联网上的大数据是当前的热门专题。
本书内容包括三部分:基础部分、进阶部分和项目实践部分。
Python爬虫的流程
基础部分(第1~6章)主要介绍爬虫的三个步骤(获取网页、解析网页和存储数据),并通过诸多示例的讲解,让读者从基础内容开始系统性地学习爬虫技术,并在实践中提升Python爬虫水平。
进阶部分(第7~12章)包括多线程的并发和并行爬虫、分布式爬虫、更换IP等,帮助读者进一步提升爬虫水平。
项目实践部分(第13~16 章)使用本书介绍的爬虫技术对几个真实的网站进行抓取,让读者能在读完本书后根据自己的需求写出爬虫程序。无论是否有编程基础,只要是对爬虫技术感兴趣的读者,本书就能带领你从入门到进阶,再到实战,一步步了解爬虫,最终写出自己的爬虫程序。
接下来就跟小编一起进入爬虫的知识海洋吧。
基础部分
第一章:网络爬虫入门
1.1为什么要学习爬虫?
在数据量爆发式增长的互联网时代,网站与用户的沟通本质上是数据的交换:搜索引擎从数据库中提取搜索结果,将其展现在用户面前;电商将产品的描述、价格展现在网站上,以供买家选择心仪的产品,社交媒体在用户生态圈的自我交互下产生大量文本、图片和视频数据。这些数据如果得以分析利用,不仅能够帮助第一方企业(也就是拥有这些数据的企业)做出更好的决策,对于第三方企业也是有益的。
上面的例子仅为数据应用的冰山一角。近几年来,随着大数据分析的火热,毕竟有数据才能进行分析,网络爬虫技术已经成为大数据分析领域的第一一个环节。
对于这些公开数据的应用价值,我们可以使用KYC框架来理解,也就是Know Your Company (了解你的公司)、Know Your Competitor (了解你的竞争对手)、KnowYourCustomer(了解你的客户)。这是理解和进行简单描述性分析公开数据就可以带来的价值。进一步讲,通过机器学习和统计算法分析,在营销领域可以帮助企业做好4P (Product: 产品创新,Place: 智能选址,Price: 动态价格,Promotion: 数据驱动的营销活动) ;在金融领域,数据驱动的征信等应用会带来越来越大的价值。
简单爬虫架构
1.2 三个流程的技术实现
下面的技术实现方法都是使用Python 语言实现的,对于Java等其他语言并不涉及。
1.获取网页
获取网页的基础技术: request、 urllib 和selenium (模拟浏览器)。
获取网页的进阶技术:多进程多线程抓取、登录抓取、突破IP封禁和服务器抓取。
2.解析网页
解析网页的基础技术: re 正则表达式、BeautifulSoup 和lxml。
解析网页的进阶技术:解决中文乱码。
3.存储数据
存储数据的基础技术:存入txt文件和存入csv文件。
存储数据的进阶技术:存入MySQL数据库和存入MongoDB数据库。
对于上述技术不熟悉的读者也不必担心,本书将会对其中所有的技术进行讲解,力求做到深入浅出。
第二章:编写第一个网络爬虫
第三章:静态网页抓取
第四章:动态网页抓取
第五章:解析网页
第六章:数据存储
进阶部分
第七章:提升爬虫的速度
7.1多线程爬虫
多线程爬虫是以并发的方式执行的。也就是说,多个线程并不能真正的同时执行,而是通过进程的快速切换加快网络爬虫速度的。
Python本身的设计对多线程的执行有所限制。在Python设计之初,为了数据安全所做的决定设置有GIL (Global Interpreter Lock,全局解释器锁)。在Python中,一个线程的执行过程包括获取GIL、执行代码直到挂起和释放GIL。
例如,某个线程想要执行,必须先拿到GIL,我们可以把GIL看作“通行证”,并且在-一个Python进程中,GIL只有 一个。拿不到通行证的线程就不允许进入CPU执行。
多线程的执行方式
每次释放GIL锁,线程之间都会进行锁竞争,而切换线程会消耗资源。由于GIL锁的存在,Python里一个进程永远只能同时执行一一个线程(拿到GIL的线程才能执行),这就是在多核CPU.上Python的多线程效率不高的原因。
由于GIL的存在,多线程是不是就没用了呢?以网络爬虫来说,网络爬虫是I0密集型,多线程能够有效地提升效率,因为单线程下有I0操作会进行I0等待,所以会造成不必要的时间浪费,而开启多线程能在线程A等待时自动切换到线程B,可以不浪费CPU的资源,从而提升程序执行的效率。
Python的多线程对于I0密集型代码比较友好,网络爬虫能够在获取网页的过程中使用多线程,从而加快速度。
第八章:反爬虫问题
第九章:解决中文乱码
第十章:登录与验证码处理
第十一章:服务器采集
第十二章:分布式爬虫
项目实践部分
爬虫实践一:维基百科
维基百科是一个网络百科全书,在一般情况下允许用户编辑任何条目。当前维基百科由非营利组织维基媒体基金会负责营运。维基百科一词是由网站核心技术Wiki和具有百科全书之意的encyclopedia共同创造出来的新混合词Wikipedia.
Wikipedia词条的页面
本章将给出一个爬取维基百科的实践项目,所采用的爬虫技术包括以下4种:
- 爬取网页:静态网页爬虫
- 解析网页:正则表达式
- 存储数据:存储至txt
- 进阶新技术:深度优先的递归爬虫,广度优先的多线程爬虫
爬虫实践二:知乎Live
知乎是中文互联网一个非常大的知识社交平台。在知乎上,用户可以通过问答等交流方式获取知识。区别于百度知道等问答网站,知乎的回答往往非常深入,都是回答者精心写的,知乎上聚集了中国互联网科技、商业、文化等领域里最具创造力的人群,将高质量的内容通过人的节点形成规模的生产和分享,构建高价值人际关系网络。
知乎Live
本章为爬取知乎网站的实践项目,所采用的爬虫技术包括以下3种。
- 爬取网页: 解析AJAX动态加载地址
- 解析网页:提取JSON数据
- 存储数据:存储至MongoDB数据库
爬虫实践三:百度地图API
百度地图是一款网络地图搜索服务。在百度地图里,用户可以查询街道、商场、楼盘的地理位置,也可以找到离你最近的餐馆、学校、银行、公园等。百度地图提供了丰富的API供开发者调用,我们可以免费地获取各类地点的具体信息。
百度API
本章为使用百度API获取数据的实践项目,所采用的技术包括:
- 爬取网页: 使用Requests请求百度地图API地址
- 解析网页:提取json数据
- 存储数据:存储至MySQL数据库
爬虫实践四:大众点评
我们平时去餐厅吃饭之前,总喜欢先在网上找找餐厅的评价,然后再决定去哪家餐厅。在互联网餐厅点评网站中,大众点评是知名的第三方消费点评网站,也是一个个本地生活信息及交易平台。因此,在大众点评上有很多商户的信息和用户点评数据。
大众点评
本章为爬取大众点评数据的实践项目,所采用的技术包括:
- 使用Selenium爬取网站
- 使用BeautifulSoup解析网页
- 数据存储至CSV文件
总的来说Python爬虫是一门很实用但是也不枯燥的技术,由于本书分的细节太多,小编就不一一打出来了,想要获取《Python爬虫从入门到实践》的小伙伴可以转发+关注后私信小编【学习】来得到获取方式吧~~~