Python爬虫(1)基础概念

Python爬虫

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

其实说白了就是通过自动化的程序批量的搜集目标信息。

这一讲的内容耗时10min左右,速览即可!
在这里插入图片描述



前言

Python 爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。

调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。
URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。
网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)包括需要登录、代理、和cookie,requests(第三方包)
网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据DOM树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,也可以使用lxml进行解析,相对于其他几种来说要强大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 树的方式进行解析的。
应用程序:就是从网页中提取的有用数据组成的一个应用。 

这是菜鸟教程对于爬虫的理解。看看就行。。。

我的想法是最上层只有三个步骤

  1. 获得网页的数据,难点在于如何才能访问到
  2. 解析返回的数据,难点在于数据的清洗
  3. 整理数据得到信息并记录,难点在于信息的提取和分析

从爬虫的技术角度讲,最难得就是第一步。毕竟是有反爬虫的。
天下毕竟没有免费的午餐啊!!!


一、爬虫语言的选择

不只是Python可以做爬虫的。绝大部分的语言都可以。
最常用的还是Python,然后是R和JAVA。

人生苦短,我用Python。
当然也推荐使用R,因为下游数据处理都方便些。。。

二、需要用的库

1.爬取要用的库

核心在于如何得到数据,其实要么下面的就够了,要么远远不够。。。

urllib:一系列用于操作URL的功能。

requests:基于 urllib 编写的,阻塞式 HTTP 请求库,发出一个请求,一直等待服务器响应后,程序才能进行下一步处理。

selenium:自动化测试工具。一个调用浏览器的 driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码。

aiohttp:基于 asyncio 实现的 HTTP 框架。异步操作借助于 async/await 关键字,使用异步库进行数据抓取,可以大大提高效率。

2.数据清洗用到的库

核心问题是定位问题

beautifulsoup:html 和 XML 的解析,从网页中提取信息,同时拥有强大的API和多样解析方式。

pyquery:jQuery 的 Python 实现,能够以 jQuery 的语法来操作解析 HTML 文档,易用性和解析速度都很好。

lxml:支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。

tesserocr:一个 OCR 库,在遇到验证码(图形验证码为主)的时候,可直接用 OCR 进行识别。

3.数据处理用到的库

核心问题在于从数据中提取信息,然后存储。

pymysql:一个纯 Python 实现的 MySQL 客户端操作库。

pymongo:一个用于直接连接 mongodb 数据库进行查询操作的库。

redisdump:一个用于 redis 数据导入/导出的工具。基于 ruby 实现的,因此使用它,需要先安装 Ruby。


三,其他的工具

爬虫框架

Scrapy:很强大的爬虫框架,可以满足简单的页面爬取(比如可以明确获知url pattern的情况)。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如 weibo 的页面信息,这个框架就满足不了需求了。

Crawley:高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为 JSON、XML 等。

Portia:可视化爬取网页内容。

newspaper:提取新闻、文章以及内容分析。

python-goose:java 写的文章提取工具。

cola:一个分布式爬虫框架。项目整体设计有点糟,模块间耦合度较高。

其实我的感觉是要学习框架,但不能依靠这些框架解决问题。简单的,标准化程度很高的网站用用就行了。
复杂的也不能满足需要求,所以我后面只会谈一下Scrapy,因为我们能学到很多的代码知识和爬取的思想。

正则表达式库re

过一眼即可,熟能生巧

compile 函数
match 函数
search 函数
findall 函数
finditer 函数
split 函数
sub 函数
subn 函数
re 模块的一般使用步骤如下:
使用 compile 函数将正则表达式的字符串形式编译为一个 Pattern 对象
通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果(一个 Match 对象)
最后使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作

抓包工具

Hping

Hping是最受欢迎和免费的抓包工具之一。它允许你修改和发送自定义的ICMP,UDP,TCP和原始IP数据包。此工具由网络管理员用于防火墙和网络的安全审计和测试。

Fiddler

Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

本质上就是手动修改报文,为啥呢?因为我们需要伪装成乖宝宝。

四,总结

以上内容,了解大概即可。用到的时候才能会。属于纯粹的技巧,也不是很难学。

爬虫代表了先进的生产力!!!
仔细想想还有什么如此简单的方法可以获得那么多廉价的数据呢?
所以让我们愉快的开启探索之旅吧(教你如何成为一只大灰狼)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

演技拉满的白马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值