zoukankan      html  css  js  c++  java
  • Python3 常用爬虫库的安装

    Python3 常用爬虫库的安装


    1 简介

    Windows下安装Python3常用的爬虫库:requests、selenium、beautifulsoup4、pyquery、pymysql、pymongo、redis、flask、django、jupyter和scrapy框架

    入控制台,用pip3 list命令查看系统已经安装了哪些第三方包:

    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
    pip (9.0.1)
    setuptools (28.8.0)
    You are using pip version 9.0.1, however version 9.0.3 is available.
    You should consider upgrading via the 'python -m pip install --upgrade pip' command.

     果显示已经安装了pip (9.0.1)setuptools (28.8.0),并提示pip可以升级到9.0.3版本,这个可以不用管。

    Tips:若安装了多个Python版本,各自安装的第三方包是独立的。本机安装了Python2.7Python3.6两个版本,命令行进入python修改为python2python3,对应的pip命令修改为pip2pip3,本机的第三方库全安装Python3.6版本下。


    2 requests库的安装

    是Python用于网页请求的库,不是内置库,需要手动安装,可以用pip命令直接安装:

    C:UsersStrive>pip3 install requests

    待安装,没有意外,最后会提示requests库以及相关依赖库安装成功:

    Successfully installed certifi-2018.1.18 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22

    试一下requests库,命令行进入python,并获取百度首页:

    C:UsersStrive>python3
    Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import requests
    >>> requests.get('http://www.baidu.com')
    <Response [200]>

    回响应码200,说明requests库安装正常。


    3 selenium库的安装

    请求用JS渲染的页面时,requests库是无法正常获取到页面结果的,这个时候就需要用到selenium库,该库可以驱动浏览器来获得JS渲染后的页面,可以用pip命令直接安装:

    C:UsersStrive>pip3 install selenium

    待安装,没有意外,最后会提示selenium库(没有依赖库)安装成功的信息:

    Successfully installed selenium-3.11.0

    试一下selenium库,命令行进入python,驱动Chrome进入百度首页:

    C:UsersStrive>python3
    Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from selenium import webdriver
    >>> driver = webdriver.Chrome()
    Traceback (most recent call last):
        File "D:PythonPython36-32libsite-packagesseleniumwebdrivercommonservice.py", line 76, in start
    stdin=PIPE)
        File "D:PythonPython36-32libsubprocess.py", line 707, in __init__
    restore_signals, start_new_session)
        File "D:PythonPython36-32libsubprocess.py", line 992, in _execute_child
    startupinfo)
    FileNotFoundError: [WinError 2] 系统找不到指定的文件。
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "D:PythonPython36-32libsite-packagesseleniumwebdriverchromewebdriver.py", line 68, in __init__
            self.service.start()
        File "D:PythonPython36-32libsite-packagesseleniumwebdrivercommonservice.py", line 83, in start
            os.path.basename(self.path), self.start_error_message)
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

     结果显示chromedriver没有配置到环境变量中,并给出了chromedriver的下载地址:https://sites.google.com/a/chromium.org/chromedriver/home 为本机没有翻墙,这个地址打不开,上百度搜索镜像,并下载对应的Chrome浏览器驱动:http://npm.taobao.org/mirrors/chromedriver/ 载最新的版本2.9,解压到当前文件夹,并将chromedriver.exe文件复制到D:PythonPython36-32Scripts目录,该目录已经配置到了环境变量中。然后用上述命令继续测试:

    C:UsersStrive>python3
    Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from selenium import webdriver
    >>> driver = webdriver.Chrome()
    
    DevTools listening on ws://127.0.0.1:12734/devtools/browser/7496d615-f493-4f91-ab7e-4a2ac81012b9

     时会弹出一个空白的Chrome窗口。继续获取百度首页面:

    >>> driver.get('http://www.baidu.com')

     结果报错:

            raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.WebDriverException: Message: unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"E43AB8BE7AF397B6CDDD47425C8396BF","isDefault":true},"id":1,"name":"","origin":"://"}
        (Session info: chrome=65.0.3325.146)
        (Driver info: chromedriver=2.9.248315,platform=Windows NT 6.3 x86_64)

    chromedriver版本与Chrome版本不匹配,chromedriver版本太高,重新下一个版本替换掉上一个chromedriver.exe,在notes.txt中可以查看chromedriver对应的Chrome版本,本机Chrome版本为版本 65.0.3325.146(正式版本) (64 位),下载chromedriver2.37版本,继续测试:

    >>>driver.get('http://www.baidu.com')

     界面可以正常显示百度首页。接下来获取网页源码:

    >>>driver.page_source

    Tips若下载的chromedriver版本不支持你的Chrome还会继续报错,请下载符合你Chrome的chromedriver。


    phantomjs浏览器的安装

    phantomjs是一个无界面的浏览器,在使用爬虫模拟浏览器操作的时候不会出现浏览器界面,操作非常方便。phantomjs的下载地址:http://phantomjs.org/download.html

    接下载最新版本即可。将解压后的phantomjs-2.1.1-windows目录剪切到D:PythonPython36-32目录下,并将D:PythonPython36-32phantomjs-2.1.1-windowsin目录配置到用户环境变量中去。命令行进入phantomjs命令:

    C:UsersStrive>phantomjs
    phantomjs>

    这个交互模式就可以执行js程序。接下来命令行进入python,用phantomjs请求百度首页,并获取网页源代码:

    C:UsersStrive>python3
    Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from selenium import webdriver
    >>> driver = webdriver.PhantomJS()
    D:PythonPython36-32libsite-packagesseleniumwebdriverphantomjswebdriver.py:49: UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
        warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '
    >>> driver.get('http://www.baidu.com')
    >>> driver.page_source

    够成功获取百度首页代码,这个过程中并没有出现浏览器窗口,结果提示Selenium已经废弃了对PhantomJS的支持,请使用Chromeheadless模式


    lxml库的安装

    lxml提供xpath的解析方式,可以对网页进行高效的解析。可以使用pip命令直接安装:

    C:UsersStrive>pip3 install lxml

    等待安装,不出意外,会出现安装成功提示:

    Successfully installed lxml-4.2.1

    果提示成功安装lxml-4.2.1版本。如果使用pip命令安装网速较慢,可以直接到:https://pypi.python.org/pypi/lxml 下载应的lxml的.whl文件,然后用pip命令进行本地安装:

    C:UsersStrive>pip3 install file_path/file_name

    Tips需要下载和Python版本对应的lxml版本并且已经安装了whl库。


    beautifulsoup库的安装

    beautifulsoup同样是一个高效的网页解析库,并且其依赖于lxml库, 在安装beautifulsoup库前先安装好lxml库。可以直接使用pip命令直接安装:

    C:UsersStrive>pip3 install beautifulsoup4

    beautifulsoup4表示beautifulsoup的第四个版本。等待安装,会出现安装成功提示:

    Successfully installed beautifulsoup4-4.6.0

    pyquery库的安装

    pyquery库同样是一个网页解析库,可以使用pip命令直接安装:

    C:UsersStrive>pip3 install pyquery

    等待安装,会出现安装成功提示:

    Successfully installed cssselect-1.0.3 pyquery-1.4.0

    8 pymysql库的安装

    pymysql是操作mysql数据库的第三方库,可以用pip命令直接安装:

    C:UsersStrive>pip3 install pymysql

    等待安装,会出现安装成功提示:

    Successfully installed pymysql-0.8.0

    pymongo库安装

    pymongo是操作Mongodb数据库的第三方库,可以用pip命令直接安装:

    C:UsersStrive>pip3 install pymongo

    等待安装,会出现安装成功提示:

    Successfully installed pymongo-3.6.1

    10 redis库的安装

    redis是一个非关系型数据库,以键值对的形式存储数据,在分布式爬虫中用于为维护一个公共爬取队列。可以用pip命令直接安装redis库:

    C:UsersStrive>pip3 install redis

     等待安装,会出现安装成功提示:

    Successfully installed redis-2.10.6

    11 flask库的安装

    flask是一个web库,爬虫中用于代理的一些设置,设置web服务器,来设置代理的获取或者存储。flask的官网:http://flask.pocoo.org/docs/0.12/ 

    以用pip命令直接安装:

    C:UsersStrive>pip3 install flask

     等待安装,该库有很多的依赖库需要安装,会出现安装成功提示:

    Successfully installed Werkzeug-0.14.1 click-6.7 flask-0.12.2 itsdangerous-0.24

    12 django库的安装

    django是一个web服务器框架,提供完整的后台管理,接口和路由等。django的官网:https://docs.djangoproject.com/en/2.0/

    pip命令直接安装:

    C:UsersStrive>pip3 install django

    等待安装,出现安装成功提示:

    Successfully installed django-2.0.3 pytz-2018.3

    13 jupyter库的安装

    jupyter是一个运行在网页端的notebook,支持代码编译和markdown语法,用pip命令直接安装:

    C:UsersStrive>pip3 install jupyter

    等待安装,出现安装成功提示:

    Successfully installed jupyter-1.0.0 jupyter-console-5.2.0 qtconsole-4.3.1

    然后命令行输入:

    C:UsersStrive>jupyter notebook

    或者:

    C:UsersStrive>ipython notebook

    可以启动jupyter


    14 scrapy框架安装

    14.1 安装环境

    计算机系统64位,Python版本3.6.2 32位。

    14.2  wheel库安装

    于安装.whl后缀文件,直接使用pip命令进行安装:

    C:UsersStrive>pip3 install wheel

    14.3 lxml库安装

    参考第5章lxml库的安装。

    14.4 pyOpenSSL库安装

    在地址:https://pypi.python.org/pypi/pyOpenSSL#downloads pyOpenSSL-17.5.0-py2.py3-none-any.whl (md5, pgp)文件到本地,然后使用pip命令进行安装:

    C:UsersStrive>pip3 install path/pyOpenSSL-17.5.0-py2.py3-none-any.whl

    Tips:需要完整的文件路径以及带上文件后缀名.whl

    14.5 Twisted库安装

    在地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载Twisted‑17.9.0‑cp36‑cp36m‑win32.whl文件到本地,然后使用pip命令进行安装:

    C:UsersStrive>pip3 install path/Twisted‑17.9.0‑cp36‑cp36m‑win32.whl

    Tips: cp36代表Python版本为3.6,win32代表Python为32位,并不是系统版本是32位,如果Python版本为64为可以下载win_amd64的版本。

    14.6 pywin32库安装

    在地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build 220/ pywin32-220.win32-py3.6.exe文件到本地,win32代表的是Python版本为32位,若Python版本为64位,可以下载win-amd64的版本。然后执行下载好的exe文件,该文件会自动识别Python的版本以及安装路径,这里下载的Python3.6 32位的版本,会自动识别出来,但是安装程序会报一个如下错误:

    Python version 3.6 required, which was not found in the registry

    示在系统注册表中找不到3.6版本的Python,但实际上Python是已经安装好并能正常使用。这时需要在注册表将Python3.6的安装路径注册一下,win+r打开运行输入regedit代开注册表,找到HKEY_CURRENT_USERSOFTWAREPythonPythonCore下面有一个名为3.6-32注册项目文件。若本机下载的是win-amd64版本的exe文件,是能通过这个注册项目文件识别出Python的安装路径的,但是安装完成后是不匹配的,无法正常使用。因为我们的Python版本是32位的。所以我们需要在3.6-32的同级目录下新建一个3.6注册项目文件,然后将3.6-32项目下的HKEY_CURRENT_USERSOFTWAREPythonPythonCore3.6-32InstallPathHKEY_CURRENT_USERSOFTWAREPythonPythonCore3.6-32PythonPath注册项目复制到3.6注册项目文件中(我是手动一个一个新建的。。。),然后再运行pywin32-220.win32-py3.6.exe文件,就能正常识别Python3.6的安装路径了。然后进行正常安装就行。安装完成进入Python验证一下:

    C:UsersStrive>python3
    Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import win32com
    >>>

    不报错,说明安装成功了。

    14.7 scrapy库安装

    上述依赖库都安装成功后,使用pip命令直接安装scrapy库:

    C:UsersStrive>pip3 install scrapy

    待安装完成即可,然后输入scrapy出现如下提示:

    C:UsersStrive>scrapy
    Scrapy 1.5.0 - no active project
    
    Usage:
        scrapy <command> [options] [args]
    
    Available commands:
        bench        Run quick benchmark test
        fetch        Fetch a URL using the Scrapy downloader
        genspider    Generate new spider using pre-defined templates
        runspider    Run a self-contained spider (without creating a project)
        settings     Get settings values
        shell        Interactive scraping console
        startproject Create new project
        version      Print Scrapy version
        view         Open URL in browser, as seen by Scrapy
    
        [ more ]     More commands available when run from project directory
    
    Use "scrapy <command> -h" to see more info about a command                

    说明scrapy安装成功,可以正常使用。


    15 Mongodb的安装和配置

    15.1 Mongodb下载

    15.2 Mongodb的启动

    安装完Mongodb后,将D:PythonMongoDBServer3.6in目录配置到系统环境变量中,就可以直接在控制台中直接使用bin目录下的可执行命令。但是此时在控制台中输入mongo命令,控制台提示连接Mongo失败,原因是安装完成后,没有配置数据存放位置。

    15.3 Mongodb的配置

    • Mongodb的目录需求Mongodb需要一个datadb目录来存放数据,一个logs目录来存放日志,一个etc目录来存放配置文件,这三个目录可以配置在任何地方,此时将logs目录配置为data的子目录,将data目录和etc目录配置在bin目录的同级目录下,也就是D:PythonMongoDBServer3.6中。
    • Mongodb所需目录创建:
      • data目录: D:PythonMongoDBServer3.6datadb
      • logs目录: D:PythonMongoDBServer3.6datalogsmongo.log
      • etc目录: D:PythonMongoDBServer3.6etcmongo.config
    • 使用mongod命令配置数据库:
      mongod --dbpath D:PythonMongoDBServer3.6datadb

       在控制台输入上述命令后按下回车,控制台显示:

      I NETWORK [initandlisten] waiting for connections on port 27017

       说明Mongodb启动成功,可以用本地浏览器访问:

      localhost:27017

       结果显示:

      It looks like you are trying to access MongoDB over HTTP on the native driver port.

       机测试上述输入未能成功显示,log显示,但命令行可正常访问数据库,该问题有待解决

      I NETWORK [conn1] Error receiving request from client: SSLHandshakeFailed: SSLHandshakeFailed.

       该命终端窗口不要关闭,令起一个终端,在命令行输入命令:

      mongo

       终端显示:

      MongoDB shell version v3.6.3
      connecting to: mongodb://127.0.0.1:27017
      MongoDB server version: 3.6.3
      >

       成功访问数据库,就此Mongodb初步配置完成。

    • 使用mongod命令配置数据库为系统服务:
      mongod --bind_ip 0.0.0.0 --dbpath D:PythonMongoDBServer3.6datadb --logpath D:PythonMongoDBServer3.6datalogsmongo.log --logappend --port 27017 --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
      管理员身份打开终端,输入上述命令,回车,然后在系统服务中查看是否有名为MongoDB的服务,可设置为自动启动,那么每次开机就可以直接使用Mongodb数据库了。
    • 使用etcmongo.config配置数据库为系统服务:  
      mongod --config D:PythonMongoDBServer3.6etcmongo.config --serviceName="MongoDB" --serviceDisplayName "MongoDB" --install

      管理员身份打开终端,在终端中输入上述命令,同样可以将Mongodb启动配置为系统服务。其中配置文件mongo.config内容为:

      dbpath=D:PythonMongoDBServer3.6datadb
      logpath=D:PythonMongoDBServer3.6datalogsmongo.log
      port=27017
      logappend=true
      bind_ip=0.0.0.0 

    15.4 Mongodb的可视化软件Robomongo


    16 AppiumPythonClient库的安装

    使用PythonAppiumPythonClient库来操作Appium,此库继承Selenium,使用方法和Selenium有很多相似之处。

    • 下载地址:https://github.com/appium/python-client
    • 安装方法:直接使用pip命令进行安装
      C:UsersStrive>pip3 install Appium-Python-Client
      Collecting Appium-Python-Client
        Downloading https://files.pythonhosted.org/packages/65/f4/b31229c97ecd03015f2e2abd79ee998f0b91977062d559270abda9f1f3fe/Appium-Python-Client-0.28.tar.gz
      Requirement already satisfied: selenium>=2.47.0 in d:pythonpython36-32libsite-packages (from Appium-Python-Client) (3.11.0)
      Building wheels for collected packages: Appium-Python-Client
        Running setup.py bdist_wheel for Appium-Python-Client ... done
        Stored in directory: C:UsersStriveAppDataLocalpipCachewheels6c665afdb958254e1879c10ae6b9c310672c147dd626de286b8a4900
      Successfully built Appium-Python-Client
      Installing collected packages: Appium-Python-Client
      Successfully installed Appium-Python-Client-0.28 
  • 相关阅读:
    c# 微信开发 《生成带参数的关注二维码》
    c# 微信开发 《获取用户的信息》
    c# 微信开发 《保存图片生成素材ID》
    c# 微信开发 《主动发送内容》
    c# 微信开发 《内容回复或事件触发》
    c# 微信开发 《生成菜单》
    记一些有趣的事
    该如何看待工作?
    学习PPT
    工作需要的软素质
  • 原文地址:https://www.cnblogs.com/strivepy/p/9683971.html
Copyright © 2011-2022 走看看