《Python 3网络爬虫开发实战 》崔庆才著 第一章笔记

一、请求库的安装

  1. requests的安装
    由于 requests 属于第三方库 ,也就是 python 默认不会自带这个库,所以需要我们手动安装。

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

    pip install selenium
    
  3. ChromeDriver的安装
    前面我们成功安装好了Selenium库,但是它是一个自动化测试工具,需要浏览器来配合使用,本节中我们就介绍一下 Chrome浏览器及ChromeDriver驱动的配置。

    查看谷歌浏览器版本

    image-20220420150247478

    下载对应的版本,https://chromedriver.storage.googleapis.com/index.html

    image-20220420150918429

    考虑到谷歌浏览器经常会自动更新,我们可以关闭自动更新浏览器

    image-20220420150823178

    image-20220420150843941

    image-20220420150805144

    下载完解压之后,移动到python的安装目录下

    image-20220420152825048

    验证安装是否成功

    image-20220420151700030

  4. GeckoDriver 的安装
    GeckoDriver 是针对于Firefox浏览器。

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

    下完之后解压,和 ChromeDriver 一样放到python的Scripts目录下

    验证安装是否成功
    image-20220420152954966

  5. PhantomJS的安装
    PhantomJS是一个无界面的、可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准: DOM操作、CSS选择器、JSON,Canvas以及SVG。
    Selenium支持 PhantomJS,这样在运行的时候就不会再弹出一个浏览器了。而且 PhantomJS的运行效率也很高,还支持各种参数配置,使用非常方便。下面我们就来了解一下 PhantomJS的安装过程。

    下载地址:https://phantomjs.org/download.html

    下载解压完之后,将bin所在的路径添加到环境变量中

    image-20220420153949775

    验证是否配置成功

    image-20220420153809721

  6. aiohttp 的安装
    之前介绍的requests库是一个阻塞式 HTTP请求库,当我们发出一个请求后,程序会一直等待服务器响应,直到得到响应后,程序才会进行下一步处理。其实,这个过程比较耗费时间。如果程序可以在这个等待过程中做一些其他的事情,如进行请求的调度、响应的处理等,那么爬取效率一定会大大提高。

    aiohttp就是这样一个提供异步Web服务的库,从Python 3.5版本开始, Python中加入了asynclawait关键字,使得回调的写法更加直观和人性化。aiohttp 的异步操作借助于asynclawait 关键字的写法变得更加简洁,架构更加清晰。使用异步请求库进行数据抓取时,会大大提高效率。

    我们会在后面的实例中用到这个库、比如维护一个代理池时,利用异步方式检测大量代理的运行状况,会极大地提升效率。

    pip install aiohttp
    
  7. 可能会出现的问题
    假如使用pycharm编写代码的时候,发现写代码的时候没有提示或者出现下图所示的错误,并且自己在本机使用cmd运行相同命令的时候没有异常。

image-20220420155503206
更改pycharm的相关配置,将python.exe更改成本机的python.exe。

image-20220420155440351

二、解析库的安装

抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如 lxml、Beautiful Soup、 pyquery等。此外,还提供了非常强大的解析方法,如XPath解析和CSS选择器解析等,利用它们,我们可以高效便捷地从网页中提取有效信息。

  1. lxml 安装
    lxml是Python的一个解析库,支持 HTML 和XML的解析,支持XPath解析方式,而且解析效率非常高。
pip install lxml
  1. Beautiful Soup 安装
    Beautiful Soup 是 Python的一个HTML或XML 的解析库,我们可以用它来方便地从网页中提取数据。它拥有强大的API和多样的解析方式。
pip install beautifulsoup4

注意,这里我们虽然安装的是 beautifulsoup4这个包,但是在引入的时候却是 bs4。这是因为这个包源代码本身的库文件夹名称就是 bs4,所以安装完成之后,这个库文件夹就被移入到本机 Python3的lib库里,所以识别到的库文件名就叫作bs4。

  1. pyquery安装
    pyquery同样是一个强大的网页解析工具,它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便。本节中,我们就来了解一下它的安装方式。
pip install pyquery
  1. tesserocr 安装
    在爬虫过程中,难免会遇到各种各样的验证码,而大多数验证码还是图形验证码,这时候我们可以直接用OCR来识别。

    下载地址:https://digi.bib.uni-mannheim.de/tesseract

    下载完之后一路next安装即可

    pip install tesseroct pillow
    

    假如上面的pip无法下载的话,就去https://github.com/simonflueckiger/tesserocr-windows_build/releases 下载python版本的tesserocr whl文件,然后使用whl进行安装

    pip install tesserocr-2.5.2-cp39-cp39-win_amd64.whl
    

    进行测试,需要先把tesserocr 下载安装后的tessdata文件移动到自己的python文件夹中

    image-20220420194145648

    验证的图片是

    image-20220420194321468

    import tesserocr
    from PIL import Image
    image=Image.open('image.png')
    print(tesserocr.image_to_text(image))
    

    执行结果,发现识别成功

    image-20220420194406784

三、数据库的安装

Mysql数据库安装过程忽略。

Redis 数据库安装

windows下载:https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504

下载完之后直接next安装即可

四、存储库的安装

  1. mysql:
pip install pymysql
  1. redis:
pip install redis
  1. RedisDump:

    redis的数据导入导出工具。安装之前还需要安装Ruby,因为只有Ruby才能使用gem命令,Ruby下载:https://rubyinstaller.org/downloads,具体的安装把全部的选项勾上然后next、回车即可。

gem install redis-dump

五、Web库的安装

  1. Flask 的安装

    Flask是一个轻量级的Web服务程序,它简单、易用、灵活,这里主要用来做一些API服务。

pip install flask

验证安装

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"

if __name__=="__main__":
    app.run()

image-20220420201537838

​ 后面,我们会利用Flask+Redis维护动态代理池和Cookies池。

  1. Tornado 的安装
    Tornado是一个支持异步的Web框架,通过使用非阻塞IO流,它可以支撑成千上万的开放连接,效率非常高,本节就来介绍一下它的安装方式。
pip install tornado

​ 后面,我们会利用Tornado+Redis来搭建一个ADSL拨号代理池。

六、App爬取相关库安装

本书介绍的抓包工具有mitmproxy 和mitmdump。一些简单的接口可以通过mitmproxy 分析,找出规律,然后直接用程序模拟来抓取了。但是如果遇到更复杂的接口,就需要利用mitmdump对接Python来对抓取到的请求和响应进行实时处理和保存。另外,既然要做规模采集,就需要自动化 App 的操作而不是人工去采集,所以这里还需要一个工具叫作 Appium,它可以像Selenium一样对App进行自动化控制,如自动化模拟App 的点击、下拉等操作。

  1. mitmproxy 的安装

    mitmproxy是一个支持 HTTP和 HTTPS的抓包程序,类似 Fiddler、 Charles 的功能,只不过它通过控制台的形式操作。

    此外,mitmproxy还有两个关联组件,一个是mitmdump,它是 mitmproxy的命令行接口,利用它可以对接Python脚本,实现监听后的处理;另一个是mitmweb,它是一个Web程序,通过它以清楚地观察到mitmproxy捕获的请求。

pip install mitmproxy
  1. 证书配置

    cmd窗口运行mitmproxy,在用户目录下的.mitmproxy找到CA证书,并且双击mitmproxy-ca.p12安装。

    一直默认,直到出现选择证书存储的选择之后,选择下图所示的选项,然后一直选择是即可。

    image-20220420215927962

  2. Appium 的安装
    Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android 、 ios等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方网站为: http://appium.iol/。

    下载地址是:https://github.com/appium/appium-desktop/releases,下载后双击安装即可。

七、爬虫框架的安装

我们直接用requests、Selenium等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现其内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久而久之,爬虫框架就诞生了。

  1. pyspider 的安装(自己在安装的时候,由于自己的python是3.9的版本,现在已经找不到pucurl 7.4.3.0.3版本的,所以安装失败了)

    需要先下载后pycurl,否则就会出错,在https://www.lfd.uci.edu/~gohlke/pythonlibs/#netifaces
    进行下载whl文件然后再进行安装
    
    pip install pycurl-7.45.1-cp39-cp39-win_amd64.whl
    pip install pyspider
    
  2. Scrapy 的安装

    Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted 14.0、 lxml 3.4和pyOpenSSL 0.14。在不同的平台环境下,它所依赖的库也各不相同,所以在安装之前,最好确保把一些基本库安装好。本节就来介绍 Scrapy在不同平台的安装方法。

    pip install lxml
    pip install pyOpenSSL
    pip install Twisted
    pip install pywin32
    pip install Scrapy
    
  3. Scrapy-Splash 的安装(我这里还没进行安装)

    Scrapy-Splash是一个Scrapy中支持JavaScript渲染的工具,本节来介绍它的安装方式。

    Scrapy-Splash的安装分为两部分。一个是Splash服务的安装,具体是通过Docker,安装之后,会启动一个Splash服务,我们可以通过它的接口来实现JavaScript页面的加载。另外一个是Scrapy-Splash的Python库的安装,安装之后即可在 Scrapy中使用Splash服务。

    docker run -p 8050:8050 scrapinghub/splash
    pip install scrapy-splash
    
  4. Scrapy-Redis 的安装

    Scrapy-Redis是Scrapy的分布式扩展模块,有了它,我们就可以方便地实现Scrapy分布式爬虫的搭建。本节中,我们将介绍Scrapy-Redis的安装方式。

    pip install scrapy-redis
    
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值