一、什么是网络爬虫
1.学习爬虫的原因:在大数据时代,要进行数据分析,首先要有数据源。而学习爬虫,可以让我们获取更多的数据源,并且这些数据源可以按我们的目的进行采集,去掉很多无关数据。
2.爬虫的分类:·通用爬虫:通常指搜索引擎的爬虫。·聚焦爬虫:针对特定网站的爬虫。聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。其中的页面数据与用户浏览器得到的HTML是完全一样的。
3.爬虫的优点:定向数据采集,数据定制化很强,数据针对性强。
4.爬虫的缺点:爬行算法的复杂度和实现难度较大。
网络爬虫(Web Crawler)又称网络蜘蛛、网络机器人,它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗的讲,网络爬虫就是一个模拟真人自动请求万维网,并接收从万维网返回的数据。与真人浏览万维网相比,网络爬虫能够浏览的信息量更大,效率也更高。
网络爬虫分类:
1)通用网络爬虫
2)聚焦网络爬虫
3)增量式网络爬虫
4)深层网络爬虫
二、抓取静态网页数据
1、什么是urllib库
urllib库是python内置的HTTP请求库,它可以看作是处理URL的组件集合。
2、快速使用urllib爬取网页
3、使用urllib实现数据传输
4、添加特定Headers——请求伪装
如果不是从浏览器发出的请求,我们是不能获得响应内容的。针对这种情况,我们需要将爬虫程序发出的请求伪装成一个从浏览器发出的请求。
5、代理服务器
6、超时设置
我们可以为HTTP请求设置超时时间,一旦超过这个时间,服务器还没有返回响应内容,那么就会抛出一个超时异常,这个异常需要使用try语句来捕获。
三、解析网页数据
1、解析网页数据的技术
1)python中提供了多种解析网页数据的技术,包括正则表达式、XPath、Beatiful、Soup、JSONPath。
2)正则表达式是一种文本模式,这种模式描述了匹配字符串的规则,用于检索字符串中是否有符合该模式的子串进行替换。
3)正则表达式的优点是功能强大,应用广泛,缺点是只适合匹配文本的字面意义,而不适合匹配文本意义。
2、正则表达式与re模块
1)正则表达式是对字符串操作的一种逻辑公式,它会将事先定义好的一些特定字符,以及这些特定字符的组合,组合一个规则字符串,并且通过这个字符串表达对给定字符串的过滤逻辑。
2)正则表达式的语法
3、XPath与Ixml库
1)XPath即XML路径语言(全称Xml Path Language),是一种用于确定XML文档中部分界点位置的语言,他起初只支持搜索XML文档,更新后也只支持XML文档,更新后也支持搜索HTML文档。
2)常用的XPath函数如下
position():返回当前被处理的节点的位置
last():返回当前节点集中的最后一个节点
count():返回节点的总数目
max((arg,arg...)):返回大于其他参数的参数
min((arg,arg...)):返回小于其他参数的参数
name():返回当前节点的名称
current-date:返回当前的日期(带有时区)
current-time:返回当前的时间(带有时区)
contains(string1,string2):若string1包含string2,则返回true,否则返回false
4、Beautiful Soup
5、JsonPath与jsonpath模块
JSONPath语法
四、抓取动态网页数据
1、抓取动态网页的技术
对于动态网页的数据可以直接使用模拟浏览器运行的方式进行实现,这样做就可以不用管网页内部是如何使用javaScript渲染页面的,也不用管Ajax请求中待敌有没有加密参数,在浏览器中看到是什么样内容,抓取的结果便是什么样的内容。
2、Seienium的基本使用
3、Seienium和WebDriver的安装与配置
4、实践项目:采集集信达平台的短信服务日志信息
五、存储数据
1、数据存储的方式
存储数据是实现网络爬虫的最后一个环节,我们在这个环节主要做的事情便是将解析后的数据进行持久化存储,为后期的数据研究工作做好准备、我们可以采用两种方式存储wlpc采集的数据:文件存储和数据库存储。
2、存储至Redis数据库
3、存储至MongoDB数据库
4、实践项目:采集小兔鲜儿网的商品信息
六、初识网络爬虫框架Scrapy.pptx
1、Scrapy框架简介
Scrapy框架的功能如此强大,离不开其自身具备的如下几个优点
- 具有丰富的文档、良好的社区以及庞大的用户群体。
- Scrapy支持并发功能,可以灵活地调整并发线程的数量。
- 采用可读性很强的XPath技术解析网页,解析速度更加快速。
- 具有统一的中间件,可以对数据进行过滤。
- 支持Shell工具,方便开发人员独立调试程序。
- 通过管道将数据存入数据库,灵活方便,且可以保存为多种形式。
- 具有高度的可定制化功能,经过简单的改造后便可以实现具有特定功能的网络爬虫。
2、Scrapy框架运行操作
- Scrapy框架的强大功能离不开众多的组件支撑,这些组件相互协作,共同完成整个采集数据的任务。Scrapy框架的架构图如下图所示:
3、Scrapy框架安装
4、Scrapy框架基本操作
七、爬虫基础语句:
1、导入必要的库和模块:
1)import requests
2)from bs4 import BeautifulSoup
2、发送HTTP请求并获取网页内容:
1)url = "http://example.com"
2)response = requests.get(url)
3、解析网页内容:
soup = BeautifulSoup(response.text, "html.parser")
4、查找特定元素:
elements = soup.find_all("div", class_="example")
5、提取特定属性:
href = soup.find("a", href=True)["href"]
6、提取文本内容:
text = soup.find("p").text
7、保存爬取的数据:
1)with open("output.txt", "w") as f:
2)f.write(text)