Skip to main content

A framework which can help you make your webspider more OOP and easy

Project description

TaskSipder

本项目是一个轻量爬虫任务框架,本框架的目的是用更低的代码成本书写爬虫代码,它更加符合OOP(面向对象)的思路,让我们的代码在大型任务之中更加的简洁。
在本项目中我们首先封装了项目中常用的访问,解析功能保证了我们只需要对于每个任务完成基本的配置就可完成一个比较基础的爬虫任务。并且我保留了每个Task节点的独立性,让Task本身只保留处理数据的功能,让整个爬虫任务作为一个DAO层来处理,将任务间逻辑判断部分交由用户自己处理,可以更加便捷的使用。
下面我们将对于基本对外接口进行介绍:

API介绍

Task包

  1. Task 本部分将作为任务处理的基本容器我们可以在非网络任务中继承这个基本类。这个基本类只提供了run(message:TaskMessage)->TaskMessage一个接口用于处理数据。

  2. NetWorkTask

    1. NetWorkTask 本模块为处理网络任务的基本容器在本模块中我们封装了一个爬虫的基本内容,我们完成了四个方法,其中需要用户覆盖的方法有二:

      1. init(TaskMessage)->VisitConfig 从传进来的数据块中提取出访问需要的Config并返回.
      2. execute(Response)->TaskMessage 从解析完成的数据中提取需要写回的内容并且返回写完的数据块. ps:Reponse返回的是一个解析URL列表返回的结果列表。
    2. VisitConfig 内含访问需要的内容。

      变量名 含义 备注
      webUrl 访问URL 输入host或者加上参数均可
      wayUrls:list() 解析URL列表 格式: 解析方式://解析参数
      visitWay:VisitorWays 访问方式 一个含有Post和Get的枚举类型
      visitData 访问数据 访问时携带的参数
      visitHeader 访问头部 可空
      delaytime 延迟时间 在访问后延迟的时间
      Session 访问会话

      ps:wayUrl注释

      wayUrl目前支持四种解析方式

      方式名称(大小写不敏感) 解析参数 例子
      REGEX 正则表达式 regex://a/b0
      XPATH xpath解析式 Xpath:////*[@class='zsml-res-items']/tr
      DOM dom中的selector解析式 dom://#_next > div._21bLU4._3kbg6I
      JSON 无需参数 json://
      NONE(指不解析) 无需参数 None://

      pps:也可以使用Core.URLS.WayUrlBuider构建

    3. VisitConfigBuider 内部含有创建访问VisitConfig的方法,提供链式调用。

    创建NetWorkTask范例

    class SSTask(NetworkTask):
        def __init__(self):
            super().__init__()
    
            #赋值基础常量 访问URL与解析URL
            self.visitUrl = "https://yz.chsi.com.cn/zsml/pages/getSs.jsp"
            self.wayUrl = "JSON://none"
    
        def init(self, message: TaskMessage) -> VisitConfig:
            builder = VisitConfig.Builder()
            visitconfig =builder.setWebUrl(self.visUrl)\
                .postWay()\
                .addWayUrl(self.wayUrl)\
                .setDelayTime(0)\
                .setVisitData(dict())\
                .setVisitHeader(dict())\
                .build()
            self.message = message
            return visitconfig
    
    
        def execute(self, visitResult) -> TaskMessage:
    
            res = {}
    
            for k_v in visitResult[0]:
                res[k_v['mc']] = k_v['dm']
            self.message.setData(key='ss',value=res)
            return self.message
    
  3. BigTask 本模块提供帮助我们对于可以并行执行的同Task完成并行效果。

    def __init__(self,task:Task,paramsName:str,orderName:str,numOfThread:int=8):
    

    task: 需要并行的任务;

    paramsName:message中哪个属性是需要拆分到每个并行任务中的;

    orderName:Task完成后我们将Task返回的message中哪个数据统一写回的最终的message中;

    numOfThread:任务中线程池中的线程个数。

  4. TaskMessage

    本模块用于为每一个Task提供参数并且为其写入参数以便捷Service层的书写。

    def getData(key:str,value:object)

    def setData(key)

    def removeData(key:str)

    本模块主要用于承载数据以后将更新其他的Api

  5. TaskManger

    目标为让多个任务完成并行,使我们可以完成多任务之间的并行策略。

    暂未完成

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

TaskSpider-0.0.2.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

TaskSpider-0.0.2-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file TaskSpider-0.0.2.tar.gz.

File metadata

  • Download URL: TaskSpider-0.0.2.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.36.1 importlib-metadata/4.11.2 keyring/18.0.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.4

File hashes

Hashes for TaskSpider-0.0.2.tar.gz
Algorithm Hash digest
SHA256 dd2ef9078c342f13a9a166856289d4d460afe77afbf1e586be0341839b033ef9
MD5 21c8ccd454b44194bd01dec79ea109d9
BLAKE2b-256 65886ce9d1c2344adacadc004720700e290a9efea59ffc462c1cbe12e12bfaf2

See more details on using hashes here.

File details

Details for the file TaskSpider-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: TaskSpider-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.36.1 importlib-metadata/4.11.2 keyring/18.0.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.4

File hashes

Hashes for TaskSpider-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2319de920399b8fafebe71e970323c9fc91fb2b0dce292a428e78202d1712a50
MD5 25c5a60d613cce612b0f1e74c022ac0d
BLAKE2b-256 3417f053df4da2836b3e24d6530aaa9bd10deca0fd096cb6fa251f9c7a8f1e11

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page