背景
网页与网页之间存在链接关系,爬虫可以顺着节点爬行到下一个节点,也就是通过一个网页继续获取后续的网页,这个整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取了。
一句话描述
获取网页并提取和保存信息的自动化程序
获取网页
爬虫首先工作是获取网页源代码,可以通过python的相关库实现,比如urllib、requests 等。我们可以用这些库来帮助我们实现 HTTP 请求操作,请求和响应都可以用类库提供的数据结构来表示,得到响应之后只需要解析数据结构中的 Body 部分即可,即得到网页的源代码,这样我们可以用程序来实现获取网页的过程了。
提取信息
获取网页代码之后,下面就是分析,可以使用正则表达式分析,但是这个正则比较难写,容易出错。而基于网页结构是有规则的,可以使用如 Beautiful Soup、pyquery、lxml 等库,高效快速地从中提取网页信息,如节点的属性、文本值等。
保存数据
我们一般会将提取到的数据保存到某处以便后续使用。这里保存形式有多种多样,如可以简单保存为 TXT 文本或 JSON 文本,也可以保存到数据库,如 MySQL 和 MongoDB 等,还可保存至远程服务器,如借助 SFTP 进行操作等
自动化程序
可以代替手动实现信息的抓取,并进行过程中的异常处理、错误重试等操作,确保爬取持续高效的进行。
能抓取怎样的数据
• 网页代码:最常见的,就是html代码
• json数据:最友好的
• 二进制数据,比如图片、音视频,得到之后可以保存为对应的文件名
• 各种扩展名的资源文件
js生成的代码
js生成的,或者ajax异步生成的页面界面是不会被抓取的,因为前面讲到,它是抓取的返回的网页代码,不会执行js.如果希望爬虫爬到这部分资源,就需要做服务端渲染(如果你原来是前后端分离的)。
备注:这种情况不是完全不能爬取,我们可以使用Selenium、Splash 这样的库来实现模拟 JavaScript 渲染。