爬虫入门
从今天开始让我们一起来学习一些爬虫的相关知识吧!这也是我在这个平台上第一次写博客来记录学习过程。有错误请大家多多指教!接下来就让我们一起开始吧!!!
(一) 什么是爬虫
1.1 爬虫的概念
爬虫用于爬取数据,又称为数据采集程序。
爬虫的数据来源于网络,而网络的数据可以有web服务器,数据库服务器云存储等等来提供。
注:利用爬虫去爬取数据当然要是合法的啦,比如你要爬取的数据必须是公开的而且是非盈利的。
1.2. python的爬虫
使用python编写的爬虫脚本(程序)可以完成定时,定量,指定目标(web站点)的数据爬取。主要使用多(单)线程/进程,网络请求库,数据解析,数据存储,任务调度等相关技术。
python爬虫工程师可以完成接口测试,功能性测试和集成测试。
(二 )爬虫与web后端服务之间的关系
爬虫使用网络请求库,相当于客户端请求,web后端服务器根据请求响应数据。(如下图)
爬虫即向web服务器发起HTTP请求,正确的接受响应数据,然后根据数据的类型(Content-Type)来进行数据解析和保存。
爬虫程序在发送请求前需要伪造浏览器(User-Agent指定请求头),然后再向服务器发起请求。
(三)Python爬虫技术的相关库
网络请求:
- urllib
- requests
- selenium(UI自动测试,动态js渲染)
- appium(手机app的爬虫或UI测试)
数据解析:
- re正则
- xpath
- bs4
- json
数据存储:
- pymysql
- mongodb
- elasticsearch
多任务库:
- 多线程(threading)/线程队列(queue)
- 协程(asynio,gevent/eventlet)
爬虫框架:
- scrapy
- scrapy-redis分布式(多机爬虫)
(四)常见的反爬虫策略
- UA(User-Agent)策略
- 登录限制(cookie)策略
- 请求频次(IP代理) 策略
- 验证码(图片-云打码,文字或物件选择,滑块等)策略
- 动态js(selenium/splash/api接口)策略