爬虫基础
一、什么是网络爬虫?
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。学会了爬虫,我们可以做:
1、数据采集
python爬虫程序可用于收集数据。这也是最直接和最常用的方法。由于爬虫程序是一个程序,程序运行得非常快,不会因为重复的事情而感到疲倦,因此使用爬虫程序获取大量数据变得非常简单和快速。
2、调研
比如要调研一家电商公司,想知道他们的商品销售情况。这家公司声称每月销售额达数亿元。如果你使用爬虫来抓取公司网站上所有产品的销售情况,那么你就可以计算出公司的实际总销售额。此外,如果你抓取所有的评论并对其进行分析,你还可以发现网站是否出现了刷单的情况。数据是不会说谎的,特别是海量的数据,人工造假总是会与自然产生的不同。过去,用大量的数据来收集数据是非常困难的,但是现在在爬虫的帮助下,许多欺骗行为会赤裸裸地暴露在阳光下。
3、刷流量和秒杀
刷流量是python爬虫的自带的功能。当一个爬虫访问一个网站时,如果爬虫隐藏得很好,网站无法识别访问来自爬虫,那么它将被视为正常访问。结果,爬虫“不小心”刷了网站的流量
二、爬虫分类
网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用爬虫(General Purpose Web Crawler)、聚焦爬虫(Focused Web Crawler)、增量式爬虫(Incremental Web Crawler)。
1.通用网络爬虫
通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。例如:百度,360,谷歌,必应等搜索引擎
2.聚焦爬虫
聚焦网络爬虫(Focused Crawler),又称主题网络爬虫(Topical Crawler),是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。这是使我们爬虫的重点
3.增量式爬虫
增量式网络爬虫(Incremental Web Crawler)是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。
三、如何编写爬虫
1.获取页面代码
- urllib ---> requests
- aiohttp / httpx
2.解析页面提取想要的信息
- 正则表达式解析 - re
- XPath解析 - lxml
- CSS选择器解析 - pyquery / beautifulsoup
3.存储(持久化,mysql、mongodb)/ 压缩 / 签名
4.数据清洗,归一化 ---> 数据分析 ---> 生成统计图表/报表
四、爬虫必备技能
1、python基础语法
2、如何抓取页面
使用到的python库:urllib.reqeust urllib.parse requests
3、解析内容
正则表达式、xpath、bs4、jsonpath
4、采集动态html
selenium
5、scrapy
高性能异步网络框架
6、分布式爬虫
scrapy-redis组件,在scrapy的基础上增了一套组件,结合redis进行存储等功能