栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

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

    查看谷歌浏览器版本

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

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

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

    验证安装是否成功

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

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

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

    验证安装是否成功

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

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

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

    验证是否配置成功

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

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

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

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


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

二、解析库的安装

抓取网页代码之后,下一步就是从网页中提取信息。提取信息的方式有多种多样,可以使用正则来提取,但是写起来相对比较烦琐。这里还有许多强大的解析库,如 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文件夹中

    验证的图片是

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

    执行结果,发现识别成功

三、数据库的安装

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()

​ 后面,我们会利用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安装。

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

  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
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号