这里主要通过以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项目的主流架构之一:nginx+gunicorn+gevent+webapp。
下面将一一对每个模块进行部署相关讲解(主要是配置方面)。
1、nginx
(以下省略)
了解、学习新的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框架概念对比:
Scrapy | Items | Spider | selectors | Item Pipeline |
web框架 | models(M层) | views(视图控制函数) | model中的field值 | 类似于models中对应的save函数 |
四、举例:
就拿自己做过的一个项目举例吧。
大致需求是:获取同行业网站的所有产品以及产品下面的评论,并提取对应产品的标题以及评论中的关键词(主要为名词和形容),最后将数据存储到mongodb中。
(以下省略)
Copyright © 2021.aoyanming个人博客站