爬虫进阶之路

本文详细介绍了爬虫技术的各个层面,包括请求库requests和selenium,解析库lxml、BeautifulSoup及pyquery,数据存储的MySQL、MongoDB和Redis,Web模块flask和django,以及爬虫框架scrapy及其扩展scrapy-splash和scrapy-redis。此外,还讲解了部署工具Docker、Scrapyd及相关API,以及OCR识别库tesserocr。
摘要由CSDN通过智能技术生成

 

目录

 

前言

请求库

requests模块

selenium模块

 

解析库

lxml模块

Beautiful Soup模块

pyquery模块

tesserocr模块

数据存储

MySQL

MongoDB

Redis

 

Web模块

flask模块

django模块

爬虫框架

scrapy模块

scrapy-splash模块

scrapy-redis模块

部署支撑工具

Docker

Scrapyd

Scrapyd-Client

Scrapyd API

Scrapyrt


前言

爬虫可以简单分为几步:抓取页面、分析页面和存储数据

pip3 install requests selenium beautifulsoup4 pyquery pymysql pymongo redis flask django jupyter

请求库

抓取页面过程就是模拟浏览器向服务器发送请求

requests模块

requests库是一个阻塞式HTTP请求库,当我们发送一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进入下一步处理

安装:pip3 install requests

selenium模块

selenium是一个自动化测试的工具,利用它我们可以驱动浏览器执行特定动作,如点击、下拉等,对于一些javascript渲染的页面来说,这种抓取方式非常有效

安装:pip3 install selenium

chrome浏览器的的驱动程序:ChomeDriver

下载地址:https://chromedriver.storage.googleapis.com/index.html

根据chrome浏览器版本寻找对应的chromedriver下载,下载完成后,将chromedriver的可执行文件配置到环境变量下,windows下建议直接放到python的script目录下,linux下,将chromedriver放到usr/bin目录下

firefox浏览器的驱动程序:GeckoDriver

下载地址:https://github.com/mozilla/geckodriver/releases

同chromedriver使用方法相同,可以配置环境变量,也可以直接放入python/script目录下

无界面浏览器:PhantomJS

使用chrome和firefox进行网页爬取有个不便之处,因为程序运行过程中需要一直开着浏览器,在爬取网页的过程中浏览器可能一直动来动去,不讲究,所以可以安装一个无界面浏览器phantomjs,此时抓取过程会在后台运行,不会再有窗口出现。

phantomJS是一个无界面的、可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准:DOM操作、CSS选择器、JSON、Canvas以及SVG

Selenium支持phantomJS,这样在运行的时候不会再弹出一个浏览器了,而且phantomJSde运行效率也很高

安装:观网下载,将可执行文件的路径配置在环境变量里(E:\BaiduNetdiskDownload\phantomjs-2.1.1-windows\bin),也可以将整个phontomJS文件夹放入已配置环境变量的目录里,如python/script(建议)

 

解析库

lxml模块

lxml支持HTML和XML的解析,支持Xpath解析方式,而且解析效率高

安装:pip3 install lxml

Beautiful Soup模块

Beautiful Soup是一个HTML和XML的解析库,它拥有强大的API和多样的解析方式,Beautiful Soup解析器是基于lxml的,所以安装前需要已安装lxml

安装:pip3 install beautifulsoup4

pyquery模块

pyquery同样是一个强大的网页解析工具,它提供了和jquery类似的语法来解析HTML文档,支持CSS选择器,使用方便

安装:pip3 install pyquery

tesserocr模块

tesserocr是一个OCR识别库,它是对tesseract做的一层python api封装,它的核心是tesseract,所以安装tesserocr之前,需要安装tesseract

在爬虫过程中,会遇到各种各样的验证码,而且大多数验证码还是图形验证码,这就需要使用ORC来识别,ORC即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过错

安装:

https://digi.bib.uni-mannheim.de/tesseract/下载安装tesseract@3.05.01;

pip3 install tesserocr pillow

如果pip安装报错,则选择使用wheel文件安装:https://github.com/simonflueckiger/tesserocr-windows_build/releases(根据python版本和win位数选择版本,不然会报错,python3已直接支持wheel文件安装,报错一般不是修改文件名的问题,是版本不对)

数据存储

MySQL

mysql进阶之路:https://mp.csdn.net/postedit/82466144

MongoDB

mongodb进阶之路:https://mp.csdn.net/postedit/82491615

Redis

redis进阶之路:https://mp.csdn.net/postedit/82497629

 

Web模块

flask模块

Flask是一个轻量级的Web服务程序,主要用来做一些API服务

安装:pip3 install flask

django模块

Django进阶之路:https://mp.csdn.net/postedit/82894028

爬虫框架

scrapy模块

Scrapy是一个十分强大的的爬虫框架,依赖的库比较多,所以安装之前确保依赖库已安装完成

基本依赖库:1、lxml;2、pyOpenSSL;3、Twisted;4、PyWin32

scrapy-splash模块

scrapy-splash是一个scrapy中支持JavaScripy渲染的工具

Scrapy-Splash的安装分为两个部分:

splash服务:安装后会启动一个splash服务,通过它的接口来实现javascript页面的加载,通过docker安装:docker run -p 8050:8050 scrapinghub/splash

Scrapy-Splash的python库:安装后可在Scrapy模块中使用splash服务,pip3 install scrapy-splash

scrapy-redis模块

Scrapy-redis是Scrapy的分布式扩展模块,有了它我们可以实现Scrapy分布式爬虫搭建

安装:pip3 install scrapy-redis

部署支撑工具

Docker

貌似只支持x64位的主机。。。

Scrapyd

Scrapyd是一个用于部署和运行Scrapy项目的工具,通过它可以将写好的Scrapy项目上传到云主机并通过API来控制它的运行

既然是项目部署,基本上都使用Linux主机

安装:pip3 install scrapyd

Scrapyd-Client

将Scrapy代码部署到远程Scrapyd的时候,第一步就是要将代码打包为EGG文件,其次需要将EGG文件上传到远程主机,这个过程可以通过Scrapyd-Client来实现这些功能

安装:pip3 install scrapyd-client

Scrapyd API

安装好Scrapyd之后,我们可以直接请求它提供的API来获取当前主机的Scrapy任务运行状况。比如,

crul http://localhost:6800/listprojects.json

返回的结果是JSON字符串

{"status":"ok","projects":["otherproject"]}

安装:pip3 install python-scrapyd-api

Scrapyrt

Scrapyrt为Scrapy提供一个调度的HTTP接口,通过它就不需要再执行scrapy命令而是通过HTTP接口来调度Scrapy任务了,Scrapyrt比Scrapyd更轻量,如果不需要分布式任务的话,可以简单使用Scrapyrt实现远程Scrapy任务的调度

安装:pip3 install scrapyrt

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值