人生苦短,我用 Python

前文传送门:

小白学 Python 爬虫(1):开篇

小白学 Python 爬虫(2):前置准备(一)基本类库的安装

小白学 Python 爬虫(3):前置准备(二)Linux基础入门

小白学 Python 爬虫(4):前置准备(三)Docker基础入门

小白学 Python 爬虫(5):前置准备(四)数据库基础

小编,你还有完没完!!!前置准备都准备这么多了,还不开始正文!!!

别急别急,前置准备的最后一篇了,我们这几篇总共介绍了基本类库的安装、 Linux 基础、 Docker 基础和本篇的爬虫框架的安装。主要是内容有些多,小编怕写在一起各位同学看不下去,所以才分成多篇内容(悄悄的说,这样小编也能多推几天嘛)。

pyspider 安装

pyspider 是由国人 binux 开源的强大的网络爬虫框架。 pyspider 自带 WebUI (这个很关键),这样我们可以实时的看到更多的数据,并且它还带有脚本编辑器、任务监控器、项目管理器以及结果处理器,同时支持多种数据库后端、多种消息队列,还支持JavaScript渲染页面的爬取,异常强大。

Github 链接: https://github.com/binux/pyspider

官方文档: http://docs.pyspider.org/

开始安装,我们还是使用 pip 进行安装:

pip install pyspider

如果各位是跟着小编一步一步装环境的话,这里应该会报错。会报我们安装 pycurl 失败。这里我们需要使用 wheel 进行安装。

第一步,安装 wheel 。

pip install wheel

下载 pycurl 的 wheel 文件进行安装,下载站点:http://www.lfd.uci.edu/~gohlke/pythonlibs/ ,找到对应的 wheel 文件版本。比如小编这里的电脑是 win64 , python3.7 ,那么就下载 pycurl‑7.43.0.3‑cp37‑cp37m‑win_amd64.whl 这个文件。

小编这里将下载好的文件放到了 D 盘的跟目录,顾使用以下命令安装。

pip install D:\pycurl-7.43.0.3-cp37-cp37m-win_amd64.whl

安装完成后,重新执行上面的安装语句。

pip install pyspider

静静等待进度条读完,完成后可以直接在命令行下启动 pyspider ,命令如下:

pyspider all

然后发现,启动报错了,错误内容如下:

SyntaxError: invalid syntax

因为 async 和 await 从 python3.7 开始已经加入保留关键字中。所以async不能作为函数的参数名。

所以我们需要修改 pyspider 代码中有用到 async 的地方,具体路径为:

修改 %homepath%\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\ 路径下的 python 文件中的 async 为 async1 (全部替换)

  1. run.py
  2. fetcher\tornado_fetcher.py
  3. webui\app.py

修改完成后,再执行 pyspider all ,发现还是报错,这不过这次的错误换成了:

ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_authenticator

原因是因为 WsgiDAV 发布了版本 pre-release 3.x。

解决办法:

还是在刚才的路径中找到webui文件里面的 webdav.py 文件打开,修改第 209 行。

将:

'domaincontroller': NeedAuthController(app),

修改为:

'http_authenticator':{
'HTTPAuthenticator':NeedAuthController(app),
},

然后再执行 pyspider all ,发现还是起不来,这是因为 pyspider 有依赖 PhantomJS ,我们再去下载 PhantomJS 进行安装,下载路径为:https://phantomjs.org/download.html ,下载完成后,从压缩包中将可执行文件 phantomjs.exe 放入 %homepath%\AppData\Local\Programs\Python\Python37\Scripts ,有没有感觉很熟悉,对嘞,这个和之前的 Chrome 的驱动文件放的是同一个位置。

这次我们输入 pyspider all 进行启动,这次应该可以启动成功,然后打开浏览器访问:http://localhost:5000/ ,可以看到如下页面:

证明我们的 pyspider 已经安装成功了。

Scrapy 安装

Scrapy 这个就不用我介绍了吧,鼎鼎大名,接下来我们主要介绍安装过程。

Scrapy 官网: https://scrapy.org/

各位同学的电脑环境应该和小编的相差不远(如果是使用 win10 的话),小编也没有背着各位同学装过其他东西。

安装命令:

pip install scrapy

由于 Scrapy 依赖了大量的第三方的包,所以在执行上面的命令后并不会马上就下载 Scrapy ,而是会先不断的下载第三方包,包括并不限于以下几种:

  • pyOpenSSL:Python 用于支持 SSL(Security Socket Layer)的包。
  • cryptography:Python 用于加密的库。
  • CFFI:Python 用于调用 C 的接口库。
  • zope.interface:为 Python 缺少接口而提供扩展的库。
  • lxml:一个处理 XML、HTML 文档的库,比 Python 内置的 xml 模块更好用。
  • cssselect:Python 用于处理 CSS 选择器的扩展包。
  • Twisted:为 Python 提供的基于事件驱动的网络引擎包。
  • ......

等待命令执行完成后,直接输入 scrapy 进行验证。

Scrapy 1.8.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 未出现其他问题,一切都很顺利,无法做其他有问题情况的演示,理论上 Scrapy 安装出现各种问题才算正常情况,小编这种一次过的只能说是运气好。

前置准备到这里就全部结束,我们接下来开始介绍 HTTP 基础。

参考

http://c.biancheng.net/view/2745.html

https://cuiqingcai.com/5407.html

小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装的更多相关文章

  1. 小白学 Python 爬虫(15):urllib 基础使用(五)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  2. 小白学 Python 爬虫(37):爬虫框架 Scrapy 入门基础(五) Spider Middleware

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  3. 小白学 Python 爬虫(3):前置准备(二)Linux基础入门

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 Linux 基础 CentOS 官网: https: ...

  4. 小白学 Python 爬虫(4):前置准备(三)Docker基础入门

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  5. 小白学 Python 爬虫(5):前置准备(四)数据库基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. 小白学 Python 爬虫(2):前置准备(一)基本类库的安装

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 本篇内容较长,各位同学可以先收藏后再看~~ 在开始讲爬虫之前,还是先把环境搞搞好,工欲善其事必先利其器嘛~~~ 本篇 ...

  7. 小白学 Python 爬虫(7):HTTP 基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  8. 小白学 Python 爬虫(8):网页基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. 小白学 Python 爬虫(9):爬虫基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

随机推荐

  1. python的GIL锁

    进程:系统运行的一个程序,是系统分配资源的基本单位. 线程:是进程中执行运算的最小单位,是处理机调度的基本单位. 处理机:是计算机中存储程序和数据,并按照程序规定的步骤执行指令的部件.包括中央处理器. ...

  2. json基本内容

    json的基本信息和历史 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于欧洲计算机协会制定的js规范的一个子集,采用完全独立于编程语言的文本格式来 ...

  3. 【Windows系统】win10系统假死,窗口不能动,鼠标能动或不能动,最后蓝屏显示错误码: VIDEO_DXGKRNL_FATAL_ERROR 的解决办法

    1. 问题的出现过程 最近博主自己用的 windows10 系统就碰到了这个问题. 一开始出现这个问题的征兆是鼠标会时不时地卡顿,一出现卡顿就会等个 1-3秒才能动.然后频繁卡顿(注意,这里根据经验就 ...

  4. null与undefined的区别?

    古之立大事者,不惟有超世之才,亦必有坚忍不拔之志. ——北宋· 苏 轼<晁错论> 1.首先看一个判断题:null和undefined 是否相等     console.log(null== ...

  5. 学习笔记36_Razor

    *Razor视图引擎 在添加视图的时候,视图引擎除了有“aspx”外,还有Razor(CSHTML),就会在对应的文件夹下,产生 view.cshtml文件,那么,以后写C#代码,就可以 @for(v ...

  6. [考试反思]1001csp-s模拟测试(b):逃离

    如你所见,b组题,除了NC乱入直奔T2抢了我一个首杀以外A层学过FFT的人都没有参加. 竞争压力很小,题又简单,所以就造就了6个AK. 然而并不计入总分,我仍然稳在第二机房. T1lyl16分钟切掉我 ...

  7. 区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(超详细教程)

    https://blog.csdn.net/so5418418/article/details/78355868

  8. 用css和js实现侧边菜单栏点击和鼠标滑动特效

    1点击效果: 2关键代码: css: #div{ display:inline-block; width:100px; height:150px; border-radius: 5px; blackg ...

  9. 使用Typescript重构axios(二十八)——自定义序列化请求参数

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  10. Python基本数据结构之集合

    一道python面试的一个小问题,说怎么使用一行代码将一个列表里的重复元素,其实这里只要将列表转换成集合就可以了. 定义 集合跟我们学的列表有点像,也是可以存一堆数据,不过它有几个独特的特点,令其在整 ...