开始爬虫之旅。
认识爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人,spider),是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。通俗的讲就是通过程序自动去获取web页面上自己想要的数据。
主要就是模拟浏览器打开网页,获取网页中我们想要的那部分数据。
简单的说一下浏览器打开网页的过程:在浏览器中输入地址后,经过DNS服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户,最后就是用户看到的浏览器显示部分了。用户看到的浏览器的结果就是由HTML代码构成的,我们爬虫就是为了获取这些内容,通过分析和过滤html代码,从中获取我们想要资源。
爬虫的基本流程主要分为4步:
第一步、发起请求:通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应。
第二步、获取响应内容:如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型。
第三步、解析内容:得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
第四步、保存数据:保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件。
在发送请求阶段,请求方式主要有GET/POST两种类型,还有一些其他方式但是不常用。
请求头包含User-Agent,Host,Cookies等信息,请求体是携带的数据,如提交表单数据时候的表单数据。
服务器端会根据请求信息给出相应的响应,包括状态码,响应头和响应体,响应体里面就是我们请求的资源内容。
从理论上来说,我们请求到什么资源就等于爬取什么样的资源,但是由于很多网站中的数据都是通过js,ajax动态加载的,所以直接通过get请求获取的页面和浏览器显示的不同。后面的随着学习的深入我们会有方法解决js渲染等问题。
解析爬下来的数据的方式:
- 直接处理;
- Json解析;
- 正则表达式处理;
- BeautifulSoup解析处理;
- PyQuery解析处理;
- XPath解析处理。
存储数据的方式:
- 文本:纯文本,Json,Xml等;
- 关系型数据库:如mysql,oracle,sql server等结构化数据库;
- 非关系型数据库:MongoDB,Redis等key-value形式存储。
了解了爬虫是什么,接下来我们就开始爬虫之旅了。