深交所新版行情二进制数据接收分析

  • 2017-03-19 17:17:05
  • 696
  • 0

这里主要通过以2015年做过的一个项目:深交所行情的二进制数据接收以及分析为例来介绍python struct模块和socket模块的使用。

先上最后一位验证码的计算方法:

def checksum(pack_content):
"""
pack_content为本次要发送的二进制内容
""" cks = 0 for i in pack_content: a = struct.unpack('!B',i) cks += a[0] return cks%256

 

一、Struct模块

(以下省略)

阅读更多

Python web项目在linux上的高并发部署

  • 2017-02-23 09:25:20
  • 1040
  • 0

开门见山,这里介绍下当前部署python web项目的主流架构之一:nginx+gunicorn+gevent+webapp。

下面将一一对每个模块进行部署相关讲解(主要是配置方面)

1、nginx

(以下省略)

阅读更多

scrapy 入门

  • 2017-02-17 20:19:10
  • 627
  • 0

了解、学习新的IT技术, 老方法:有定义则先从定义入手;其次分析理解定义,思考应用场景;了解、学习已有使用案例,并与预设想的场景对比。另外,了解新事物的历史也是非常有必要的。

一、定义:

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了 页面抓取 (更确切来说是网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

二、解释:

从定义中,可以提取中一下几点重要信息:

1、应用框架

       应用:是相对于”理论“而言,可以方便被使用、应用。

       框架:IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。可以初步猜想此框架还是属于web 框架范畴,框架原理还是基于MVC,但考虑到该框架是用来做爬虫的,所以它主要是偏重于M和C层的。

2、爬取网站数据

      为该框架的核心功能,底层用到的应该是urllib和urllib2模块。但作为一个爬虫框架还应该可以轻松配置发送多并发web请求的,配置各种特有功能中间件等,设置请求cookie、请求头、缓存等等,爬虫状态监测及获取、异常处理等等。

3、提取结构性数据

     关于提取结构性数据这块,python已有组件如:beautifulsoup,xml。可以设想在分析结构性数据这块时,scrapy可能既会保留对beautifulsoup、xml调用的支持,也有可能自己写一套解析模块。

​三、知识过渡与整体理解:

Items:爬取的主要目标就是从非结构性的数据源提取结构性数据,Item就是用来保存爬取到的结构性数据的容器,数据类型为python的dict

Spider:简而言之,就是定义爬取的动作及分析某个网页(或者部分网页)的地方。

​Selectors:称作选择器(seletors),是指通过特定的 XPath 或者 CSS 表达式来“选择” HTML文件中的某个部分。

Item Pipeline​:当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。

​与web框架概念对比:

 

ScrapyItemsSpiderselectorsItem Pipeline
web框架models(M层)views(视图控制函数)model中的field值类似于models中对应的save函数

四、举例:

就拿自己做过的一个项目举例吧。

大致需求是:获取同行业网站的所有产品以及产品下面的评论,并提取对应产品的标题以及评论中的关键词(主要为名词和形容),最后将数据存储到mongodb中。

(以下省略)

阅读更多