仿scrapy的爬虫框架 (python3.5以上模块化,需要支持async/await语法)

本文主要是介绍仿scrapy的爬虫框架 (python3.5以上模块化,需要支持async/await语法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

不知道是不是代码过多导致的,如果把代码放进code标签内提交以后直接进入500页面,所以就不贴代码了

传送门:https://github.com/zjl1110/WebCrawler

目录结构:

WebCrawler
    |----common(通用模块)
        |----__init__.py
        |----email_manager.py(邮件管理)
        |----error_code.py(错误码管理)
        |----html_manager.py(html页面的redis管理)
        |----item_manager.py(模仿scrapy的Field等类)
        |----log_manager.py(日志管理)
        |----random_headers.py(headers管理)
        |----redis_manager.py(redis管理)
        |----request_common.py(request通用函数)
        |----request_manager.py(request管理和response管理)
        |----url_manager.py(url的redis管理)
    |----spiders(爬虫实现)
        |----__init__.py
        |----xxx.py(爬虫例子)
    |----items.py(模仿scrapy的items)
    |----pipelines.py(模仿scrapy的Pipeline)
    |----run.py(入口函数)
    |----setting.py(配置文件)


python版本3.5或者以上(不然不支持async/await语法)
需要安装mongodb,redis
需要的第三方库
redis
aiohttp
lxml

pymongo



只需要在spiders下写爬虫,有点类似scrapy,因为格式是照着scrapy的格式仿写的
按照spiders下的例子仿写就可以了解大致用法



基本熟悉写法以后就可以专注写爬虫,周边模块已经写得差不多,利用redis模块也可以扩展成简单的分布式,因为只花了两天写的,还会碰到一些问题,可以交流,我在工作中碰到问题也会及时修改这里的代码,让代码的适应性更强一点,应用更广泛


这个算是一个爬虫框架吗?????





这篇关于仿scrapy的爬虫框架 (python3.5以上模块化,需要支持async/await语法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110788

相关文章

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链