iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3网络爬虫实战-10、爬虫框
  • 430
分享到

Python3网络爬虫实战-10、爬虫框

爬虫实战网络 2023-01-31 07:01:17 430人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

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

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

利用框架我们可以不用再去关心某些功能的具体实现,只需要去关心爬取逻辑即可。有了它们,可以大大简化代码量,而且架构也会变得清晰,爬取效率也会高许多。所以如果对爬虫有一定基础,上手框架是一种好的选择。

本书主要介绍的爬虫框架有PySpider和scrapy,本节我们来介绍一下 PySpider、Scrapy 以及它们的一些扩展库的安装方式。

PySpider 是国人 binux 编写的强大的网络爬虫框架,它带有强大的 WEBUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时它支持多种数据库后端、多种消息队列,另外它还支持 javascript 渲染页面的爬取,使用起来非常方便,本节介绍一下它的安装过程。

1. 相关链接

2. 准备工作

PySpider 是支持 JavaScript 渲染的,而这个过程是依赖于 Phantomjs 的,所以还需要安装 PhantomJS,所以在安装之前请安装好 PhantomJS,安装方式在前文有介绍。

3. Pip安装

推荐使用 Pip 安装,命令如下:

pip3 install pyspider
python资源分享qun 784758214 ,内有安装包,pdf学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

命令执行完毕即可完成安装。

4. 常见错误

windows 下可能会出现这样的错误提示:Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vXo1W3/pycurl
这个是 PyCurl 安装错误,一般会出现在 Windows 下,需要安装 PyCurl 库,下载链接为:http://www.lfd.uci.edu/~gohlk...,找到对应 Python 版本然后下载相应的 Wheel 文件。
如 Windows 64 位,python3.6 则下载 pycurl‑7.43.0‑cp36‑cp36m‑win_amd64.whl,随后用 Pip 安装即可,命令如下:

pip3 install pycurl‑7.43.0‑cp36‑cp36m‑win_amd64.whl

linux 下如果遇到 PyCurl 的错误可以参考本文:https://imlonghao.com/19.html

Mac遇到这种情况,执行下面操作:

brew install openssl

openssl version 
查看版本
find /usr/local -name ssl.h

可以看到形如:
usr/local/Cellar/openssl/1.0.2s/include/openssl/ssl.h

添加环境变量
export PYCURL_SSL_LIBRARY=openssl
export LDFLAGS=-L/usr/local/Cellar/openssl/1.0.2s/lib
export CPPFLAGS=-I/usr/local/Cellar/openssl/1.0.2s/include

 pip3 install pyspider

5. 验证安装

安装完成之后,可以直接在命令行下启动 PySpider:

pyspider all

图 1-75 控制台
这时 PySpider 的 Web 服务就会在本地 5000 端口运行,直接在浏览器打开:http://localhost/:5000/ 即可进入 PySpider 的 WebUI 管理页面,如图 1-76 所示:

Python3网络爬虫实战-10、爬虫框架的安装:PySpider、Scrapy

图 1-76 管理页面
如果出现类似页面那证明 PySpider 已经安装成功了。
在后文会介绍 PySpider 的详细用法。

这里有一个深坑,PySpider在Python3.7上运行时会报错

File "/usr/local/lib/python3.7/site-packages/pyspider/run.py", line 231
    async=True, get_object=False, no_input=False):
        ^
SyntaxError: invalid syntax

原因是python3.7中async已经变成了关键字。因此出现这个错误。
修改方式是手动替换一下

下面位置的async改为mark_async

/usr/local/lib/python3.7/site-packages/pyspider/run.py  的231行、245行(两个)、365行

/usr/local/lib/python3.7/site-packages/pyspider/webui/app.py 的95行

/usr/local/lib/python3.7/site-packages/pyspider/fetcher/tornado_fetcher.py 的81行、89行(两个)、95行、117行

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

1. 相关链接

3. Mac下的安装

在 Mac 上构建 Scrapy 的依赖库需要 C 编译器以及开发头文件,它一般由 Xcode 提供,运行如下命令安装即可:

xcode-select --install

随后利用 Pip 安装 Scrapy 即可,运行如下命令:

pip3 install Scrapy

运行完毕之后即可完成 Scrapy 的安装。

4. 验证安装

安装之后,在命令行下输入 scrapy,如果出现类似下方的结果,就证明 Scrapy 安装成功,如图 1-80 所示:

Python3网络爬虫实战-10、爬虫框架的安装:PySpider、Scrapy

图 1-80 验证安装

5. 常见错误

pkg_resources.VersionConflict: (six 1.5.2 (/usr/lib/python3/dist-packages), Requirement.parse('six>=1.6.0'))

six 包版本过低,six包是一个提供兼容 Python2 和 Python3 的库,升级 six 包即可:

sudo pip3 install -U six

c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory

这是在 Linux 下常出现的错误,缺少 Libffi 这个库。什么是 libffi?“FFI” 的全名是 Foreign Function Interface,通常指的是允许以一种语言编写的代码调用另一种语言的代码。而 Libffi 库只提供了最底层的、与架构相关的、完整的”FFI”。
安装相应的库即可。
ubuntu、Debian:

sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

Centos、RedHat:

sudo yum install GCc libffi-devel python-devel openssl-devel

Command "python setup.py egg_info" failed with error code 1 in/tmp/pip-build/cryptography/

这是缺少加密的相关组件,利用Pip 安装即可。

pip3 install cryptography

ImportError: No module named 'packaging'

缺少 packaging 这个包,它提供了 Python 包的核心功能,利用 Pip 安装即可。


ImportError: No module named '_cffi_backend'

缺少 cffi 包,使用 Pip 安装即可:

pip3 install cffi

ImportError: No module named 'pyparsing'
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

缺少 pyparsing 包,使用 Pip 安装即可:

pip3 install pyparsing appdirs

--结束END--

本文标题: Python3网络爬虫实战-10、爬虫框

本文链接: https://www.lsjlt.com/news/192319.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3网络爬虫实战-10、爬虫框
    我们直接用 Requests、Selenium 等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现其内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-11、爬虫框
    ScrapySplash 是一个 Scrapy 中支持 JavaScript 渲染的工具,本节来介绍一下它的安装方式。ScrapySplash 的安装分为两部分,一个是是 Splash 服务的安装,安装方式是通过 Docker,安装之后会...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-15、爬虫基
    在写爬虫之前,还是需要了解一些爬虫的基础知识,如 HTTP 原理、网页的基础知识、爬虫的基本原理、Cookies 基本原理等。 那么本章内容就对一些在做爬虫之前所需要的基础知识做一些简单的总结。 在本节我们会详细了解 HTTP 的基本原理...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-17、爬虫基
    爬虫,即网络爬虫,我们可以把互联网就比作一张大网,而爬虫便是在网上爬行的蜘蛛,我们可以把网的节点比做一个个网页,爬虫爬到这就相当于访问了该页面获取了其信息,节点间的连线可以比做网页与网页之间的链接关系,这样蜘蛛通过一个节点后可以顺着节点连线...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-9、APP爬
    Appium 是移动端的自动化测试工具,类似于前面所说的 Selenium,利用它我们可以驱动 Android、iOS 等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方网站为:http://appium.io/,本节来了解一下 ...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-7、APP爬
    MitmProxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。同时 MitmProxy 还有两个关联组件,一个是 MitmDump,它是 MitmProx...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-8、APP爬
    MitmProxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。同时 MitmProxy 还有两个关联组件,一个是 MitmDump,它是 MitmProx...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-6、APP爬
    除了 Web 网页,爬虫也可以对 APP 的数据进行抓取,APP 中的页面要加载出来,首先需要获取数据,那么这些数据一般是通过请求服务器的接口来获取的,由于 APP 端没有像浏览器一样的开发者工具直接比较直观地看到后台的请求,所以对 APP...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-30、PyQ
    在上一节我们介绍了 BeautifulSoup 的使用,它是一个非常强大的网页解析库,可有没有觉得它的一些方法使用有点不适应?有没有觉得它的 CSS 选择器功能没有那么强大? 如果你对 Web 有所涉及,如果你比较喜欢用 CSS 选择器,如...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-18、Ses
    在浏览网站的过程中我们经常会遇到需要登录的情况,有些页面只有登录之后我们才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就会需要重新登录。还有一些网站有时在我们打开浏览器的时候就自动登录了,而且很长的时间都不会失效,这种...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-25、req
    在前面一节我们了解了 Requests 的基本用法,如基本的 GET、POST 请求以及 Response 对象的用法,本节我们再来了解下 Requests 的一些高级用法,如文件上传,代理设置,Cookies 设置等等。 我们知道 Re...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-27、Req
    本节我们利用 Requests 和正则表达式来抓取猫眼电影 TOP100 的相关内容,Requests 相较于 Urllib 使用更加方便,而目前我们还没有系统学习 HTML 解析库,所以可能对 HTML 的解析库不是很了解,所以本节我们选...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-16、Web
    我们平时用浏览器访问网站的时候,一个个站点形形×××,页面也各不相同,但有没有想过它是为何才能呈现出这个样子的?那么本节我们就来了解一下网页的基本组成、结构、节点等内容。 网页可以分为三大部分,HTML、CSS、JavaScript,我们...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-24、req
    在前面一节我们了解了 Urllib 的基本用法,但是其中确实有不方便的地方。比如处理网页验证、处理 Cookies 等等,需要写 Opener、Handler 来进行处理。为了更加方便地实现这些操作,在这里就有了更为强大的库 Request...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-5、Web库
    Web 想必我们都不陌生,我们现在日常访问的网站都是 Web 服务程序搭建而成的,Python 同样不例外也有一些这样的 Web 服务程序,比如 Flask、Django 等,我们可以拿它来开发网站,开发接口等等。 在本书中,我们主要要用到...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫(十一):爬虫黑科
    原文链接: Jack-Cui,http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 1 前言 近期,有些朋友问我一些关...
    99+
    2023-01-31
    爬虫 网络
  • 10.网络爬虫—MongoDB详讲与实战
    网络爬虫—MongoDB详讲与实战 MongoDBMongoDB安装创建数据目录1.数据库操作2.集合操作3.文档操作4.索引操作5.聚合操作6.备份与恢复 MongoDB增删改查mong...
    99+
    2023-09-10
    爬虫 mongodb 数据库 python
  • Python3网络爬虫实战-21、使用U
    在前面一节我们了解了 Request 的发送过程,但是在网络情况不好的情况下,出现了异常怎么办呢?这时如果我们不处理这些异常,程序很可能报错而终止运行,所以异常处理还是十分有必要的。 Urllib 的 error 模块定义了由 reques...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-23、使用U
    利用 Urllib 的 robotparser 模块我们可以实现网站 Robots 协议的分析,本节我们来简单了解一下它的用法。 Robots 协议也被称作爬虫协议、机器人协议,它的全名叫做网络爬虫排除标准(Robots Exclusio...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-13、部署相
    在将 Scrapy 代码部署到远程 Scrapyd 的时候,其第一步就是要将代码打包为 Egg 文件,其次需要将 Egg 文件上传到远程主机,这个过程如果我们用程序来实现是完全可以的,但是我们并不需要做这些工作,因为 ScrapydCli...
    99+
    2023-01-31
    爬虫 实战 网络
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作