千家信息网

Python爬虫的PySpider框架怎么用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"Python爬虫的PySpider框架怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python爬虫的PySpider框架怎
千家信息网最后更新 2026年11月04日Python爬虫的PySpider框架怎么用

这篇文章主要讲解了"Python爬虫的PySpider框架怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python爬虫的PySpider框架怎么用"吧!

pyspider 是一个支持任务监控、项目管理、多种数据库,具有 WebUI 的爬虫框架,它采用 Python 语言编写,分布式架构。详细特性如下:

  • 拥有 Web 脚本编辑界面,任务监控器,项目管理器和结构查看器;

  • 数据库支持 MySQL、MongoDB、Redis、SQLite、Elasticsearch、PostgreSQL、SQLAlchemy;

  • 队列服务支持 RabbitMQ、Beanstalk、Redis、Kombu;

  • 支持抓取 JavaScript 的页面;

  • 组件可替换,支持单机、分布式部署,支持 Docker 部署;

  • 强大的调度控制,支持超时重爬及优先级设置;

  • 支持 Python2&3。

PySpider 主要分为 Scheduler(调度器)、 Fetcher(抓取器)、 Processer(处理器)三个部分,整个爬取过程受到 Monitor(监控器)的监控,抓取的结果被 Result Worker(结果处理器)处理。

基本流程为:Scheduler 发起任务调度,Fetcher 抓取网页内容,Processer 解析网页内容,再将新生成的 Request 发给 Scheduler 进行调度,将生成的提取结果输出保存。


PySpiderScrapy
可视化拥有 WebUI,爬虫的编写、调试可在 WebUI 中进行采用代码、命令行操作,实现可视化需对接 Portia
JS渲染爬取支持使用 PhantomJS 对 JavaScript 渲染页面的采集需对接 Scrapy-Splash 组件
解析内置了 PyQuery 作为选择器对接了 XPath、CSS 选择器、正则匹配
扩展扩展性弱模块之间耦合度低,扩展性强,如:对接 Middleware、 Pipeline 等组件实现更强功能

总的来说,PySpider 更加便捷,Scrapy 扩展性更强,如果要快速实现爬取优选 PySpider,如果爬取规模较大、反爬机制较强,优选 Scrapy。

安装

PySpider目前已不再维护,仅支持到python3.6,所以安装3.6以上的版本会出现报错问题,可按以下方式进行安装:

安装wheel(已安装可跳过)

conda install wheel

安装pycurl(已安装可跳过)

conda install pycurl

安装pyspider

pip install pyspider

安装phantomjs

解压后将bin目录下的phantomjs.exe复制到python.exe文件所在目录

找到../Python/Lib/python3.7/site-packages/pyspider/run.py,../Python/Lib/site-packages/pyspider/fetcher/tornado_fetcher.py,../Python/Lib/site-packages/pyspider/webui/app.py,将文件里面的async换一个名字(非关键字)就可,例如asynch

找到 ../Python/Lib/site-packages/pyspider/webui/webdav.py文件,将'domaincontroller': NeedAuthController(app),修改成:

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

降低wsgidav版本

python -m pip uninstall wsgidav # 卸载
python -m pip install werkzeug==1.0.0 #安装1.0.0版本

运行

cmd窗口中输入pyspider或者pyspider all启动全部

浏览器访问 http://localhost:5000/ ,能访问成功则表明运行成功

创建项目

Create-->Project Name-->Start URL(可省略到代码中再写)-->Create

调试代码

源码解读

#!/usr/bin/env python# -*- encoding: utf-8 -*-# Created on 2021-07-04 20:31:18# Project: tripadvisorfrom pyspider.libs.base_handler import *class Handler(BaseHandler):    crawl_config = {  # 全局参数设置,请求头和cookies可以在这里设置(传入关键字及对应的参数即可)    }    def __init__(self):  # 初始配置        self.base_url = 'https://www.tripadvisor.cn/Attractions-g298555-Activities?subcategory=49&subtype=0'    @every(minutes=24 * 60)  # 装饰器,@every设置多久爬取一次(24*60为一天一次)    def on_start(self):  # 开始爬取的入口        '''        crawl和requests有相同的功能 ,可以支持 get(默认) 和 post,常用的参数有:                data: 想要的提交数据                callback: 执行完crawl后要调用的回调函数                method: 指定访问方法                files: 上传文件,{'key': ('file.name': 'content')}                headers: 请求头,类型dict                cookies: 请求的Cookies,类型dict                timeout: 请求内容里最大等待秒数.默认值:120                connect_timeout: 指定请求时链接超时时间,单位秒,默认值:20                proxy: 设置代理服务器,暂时只支持http代理        '''        self.crawl(self.base_url, callback=self.index_page,fetch_type='js')  # fetch_type='js' 爬取异步数据        # index_page和detail_page只是初始脚本中的回调函数,除了on_start,其他的函数名可以自定    '''    @config:            age: 设置任务的有效期限,在这个期限内目标爬取的网页被认为不会进行修改,以秒为单位            priority: 设定任务优先级,越大代表有越优先执行            auto\_recrawl: 设置是否每到age时间重新爬取一次,默认值是:False            priority: 这个参数用来指定任务的优先级,数值越大越先被执行,默认值为 0            retries: 任务执行失败后重试次数,默认值是 3            itag: 任务标记值,此标记会在抓取时对比,如果这个值发生改变,不管有效期有没有到都会重新抓取新内容.多数用来动态判断内容               是否修改或强制重爬,默认值是 None    '''    @config(age=10 * 24 * 60 * 60)  # 有效期限为十天,十天内的数据不会被重复爬取    def index_page(self, response):        for each in response.doc('a[href^="http"]').items():            self.crawl(each.attr.href, callback=self.detail_page,fetch_type='js')    @config(priority=2)     def detail_page(self, response):        return {            '''            response:                    crawl: 返回的对象是 response 对象                    response.url: 返回最后的URL地址                    response.text: 请求响应的文本格式内容(如果Response.encoding是None或chardet模块可用, 响应内容会自动被                               解析为指定的编码)                    response.doc: 本方法会调用PyQuery库用返回的内容生成一个PyQuery对象以方便使用                    response.json: 本方法会调用JSON相关库来解析返回的内容                    response.status_code: 返回响应的状态码                    response.headers: 请求响应的头信息,dict格式                    response.cookies: 响应的cookies                    response.time: 抓取使用的时间                      '''            "url": response.url,            "title": response.doc('title').text(),  # text() 返回text文本            "html": response.doc('title').html()  # html() 返回网页,包含标签        }

感谢各位的阅读,以上就是"Python爬虫的PySpider框架怎么用"的内容了,经过本文的学习后,相信大家对Python爬虫的PySpider框架怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

支持 内容 任务 爬虫 框架 数据 参数 文件 网页 监控 调度 有效 代码 优先级 函数 对象 扩展性 时间 期限 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网产品 互联网金融 科技 南京欣网互联网科技 顺网科技2021年互联网排名 科技与互联网哪个更好 栖莱科技互联网股份有限公司 黑科技闪耀互联网之光 恒生互联网科技指数跳水 互联网媒体平台算高科技产业 链环科技传统企业怎么转型互联网 互联网科技大赛获奖感言 上海钢联属于互联网科技股吗 黑云互联网科技有限公司 城市宝互联网科技有限公司 世界互联网科技成果奖 中国互联网公司的科技投入 银川新华互联网科技学校原画 唐山双旺合互联网科技产业园 现代科技的标志之一的互联网 株洲百竞科技的互联网营销顾问 互联网 科技公司 科技大学互联网专业好不好 以后互联网后是啥科技 成都铂石互联网科技做什么的 互联网科技公司有风险吗 苏州铭阳互联网科技有限公司 东莞新华互联网科技学校 抖集互联网科技技术咨询 云鲸互联网络科技有限公司 青岛互联网科技园
0