5月 06

scrapy 学习笔记 一

  很多python开发都在用scrapy框架开发抓取,我也算学习一下。虽然笔记序号为一,但是能不能坚持下去还不知道,写着看吧。官方网址:http://scrapy.org/。官方接受scrapy是纯python做的高效的web抓取框架,网络爬虫,后提取相关页面的数据。scrapy可以用于数据挖掘、监控和自动化测试等工作。据说google的大部分爬虫也是用python写的,但是不知道是否用了这个框架。可以肯定的是,这个框架能做很多事、很大,我只会用到很简单一部分。我做笔记是为自己学习记录,既不系统也不全面,建议大家到官方下载pdf的文档,进行学习,我也是通过pdf文档学习,并使用其中的例子修改为自己的形成笔记。为了不引起争议,直接用自己的站进行抓取学习。
  开始学习了,linux的环境,是CentOS5,windows的环境是win7,python都是2.6,因为scrapy支持2.6、2.7,不支持3.X。直接使用easy_install安装,但是windows上安装的是0.14.3,linux上安装的0.12,官方网站上最新的开发版本是0.15。不知道为什么差距这么大。为了方便学习直接手动下载0.15,安装到linux上。

tar zxf Scrapy-X.X.X.tar.gz
cd Scrapy-X.X.X
python setup.py install

  在linux上安装有警告,关于ssl的,如下

Running pyOpenSSL-0.13/setup.py -q bdist_egg –dist-dir /tmp/easy_install-rx8P0H/pyOpenSSL-0.13/egg-dist-tmp-g7Da22
warning: no previously-included files matching ‘*.pyc’ found anywhere in distribution
OpenSSL/ssl/connection.c: In function ‘ssl_Connection_set_context’:
OpenSSL/ssl/connection.c:289: 警告:隐式声明函数 ‘SSL_set_SSL_CTX’
OpenSSL/ssl/connection.c: In function ‘ssl_Connection_get_servername’:
OpenSSL/ssl/connection.c:313: 错误:‘TLSEXT_NAMETYPE_host_name’ 未声明 (在此函数内第一次使用)
OpenSSL/ssl/connection.c:313: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
OpenSSL/ssl/connection.c:313: 错误:所在的函数内只报告一次。)
OpenSSL/ssl/connection.c:320: 警告:隐式声明函数 ‘SSL_get_servername’
OpenSSL/ssl/connection.c:320: 警告:赋值时将整数赋给指针,未作类型转换
OpenSSL/ssl/connection.c: In function ‘ssl_Connection_set_tlsext_host_name’:
OpenSSL/ssl/connection.c:346: 警告:隐式声明函数 ‘SSL_set_tlsext_host_name’
error: Setup script exited with error: command ‘gcc’ failed with exit status 1

  直接下载pyopenssl后安装,
http://pypi.python.org/packages/source/p/pyOpenSSL/pyOpenSSL-0.12.tar.gz

  再执行 easy_install -U scrapy,安装成功。
  在windows上除了安装pyopenssl还要w3lib、Twisted,但是处理比较简单,直接easy_install安装,如:C:\Python26\Scripts>easy_install.exe pyopenssl。
  环境搭建完成,毕竟使用的linux服务器,所以还是在linux上学习。开始创建一个抓取项目,项目名为scrapytest.
>scrapy startproject simonzhang
创建项目完毕,目录树如下,:

simonzhang
│  scrapy.cfg               # 整个目录的配置
│
└─simonzhang                # 项目模块,代码都放在这
    │  items.py             # 项目的items文件,相当于格式化抓取的内容,以字典形式返回
    │  pipelines.py         # 项目的pipelines,管理通道,主要是对抓取网页后的数据清洗、验证和入库
    │  settings.py          # 项目的设置文件,
    │  __init__.py
    │
    └─spiders             # 这个目录放的是蜘蛛文件,
            __init__.py

  进入simonzhang目录,编辑simonzhang/items.py

from scrapy.item import Item, Field

class ScrapytestItem(Item):
    # define the fields for your item here like:
    # name = Field()
    title =  Field()
    link = Field()
    desc = Field()
    pass

  编写第一个蜘蛛simonzhang/spiders/frist_simonzhang.py

from   scrapy.spider      import   BaseSpider 

class   DmozSpider (BaseSpider): 
      name  =  "simonzhang_net"     # 蜘蛛的名字,一个项目下每个蜘蛛名字必须是唯一的
      allowed_domains = ["simonzhang.net"] 
      start_urls = ["http://www.simonzhang.net/"]  #下载列表,注意域名后面需要一个“/”因为稍后会用于截取文件名

      def  parse (self,response):   # 抓取和保存的方法
           filename    =  response.url.split("/")[2] 
           open (filename, 'wb').write(response .body)

  进入simonzhang/simonzhang/spiders目录运行下面命令:
scrapy crawl simonzhang_net
  运行完毕,看到目录下已经有一个www.simonzhang.net的文件,打开文件可以看到是抓取为首页的文件。

scrapy 学习笔记 二
http://www.simonzhang.net/?p=1112

5月 05

太阳能手机继电器使用心得

  智能手持设备越来越多,电池容量虽然不断加大,也明显有些体力不支。我买了一个太阳能的充电器,因为可以用太阳能充电所以电池就买的1500毫安的。通过实测郁闷了。给手机充电没有什么问题,但是由于电池容量小,所以还需要借助太阳能。充电时必须要光线直射,并且充电需要20个小时才能把1500毫安的电池充满。如果每天能充电的光照是10个小时的话,要晒两天。可见救急基本不可能了。建议大家如果买,还是直接买高电量的电池吧。
image

5月 04

SD 中class级别的意义

image

  之前买的手机说是带8G卡,当时看确实8G容量就没在意。今天又买了张16G的class4的存储开,把之前的换下来。时才发现原来带的是class2的。不知道两种类型能查多少。到网上查看了一下,得到一下结果再次做个记录。

SD2.0的规范中对于SD卡的性能上分为如下若干个等级,不同等级能分别满足不同的应用要求:
Class 0:包括低于Class 2和未标注Speed Class的情况;
Class 2:能满足观看普通MPEG4 MPEG2 的电影、SDTV、数码摄像机拍摄;
Class 4:可以流畅播放高清电视(HDTV),数码相机连拍等需求;
Class 6:满足单反相机连拍和专业设备的使用要求;
class 10:满足更高速率要求的存储需要。

Class等级是按8KB文件写入的每秒速度换算的:
[Class2(>2MB/s)
Class4(>4MB/s)
Class6(>6MB/s)
Class10(>10MB/s)

参考:http://ask.zol.com.cn/q/18461.html

4月 29

种菜录–芽菜1

  买了几种芽菜的种子,有麻豌豆、香椿、油葵。准备学习自己种菜,个人爱好与中国食品安全问题无关。以下做个简单记录。
  首先试种麻豌豆。将种子放在清水里泡12个小时。

  找底部有孔的器皿,因为种子的根可以扎下去。在器皿中铺上两张面巾纸并用水打湿,将种子平铺上去,原则是不留白不重叠。如果不能确定要用多少种子,可以先把种子撒在上面,然后在倒出来泡。干的种子在试的时候可以稀一点,因为泡后会膨胀。

  摆好的种子,要用湿毛巾盖在上面(毛巾直接压在种子上就行)。每天3次在毛巾上喷水,保持湿润但是水不会滴出即可。大于1-2天就能升根了,这个要多观察。看我的照片已经有根并且发芽了。

  发芽后就不要用毛巾盖着,但是也要放在光线弱的阴暗处,并且也是每天喷三次水。待张到3-4厘米后可以慢慢搬到有散射光的地方,最好不要直射,据说直射生长后,吃起来比较硬。我的已经张到10-12厘米了。

  用剪刀直接收割,保留3-4厘米的颈,希望能在收获一茬。但是这个愿望能否实现还不确定,等待中。


  最后一步大家就可以自己发挥想象力。我展示一下我的方案。因为做了一大锅所以我也没有分到几根。哈哈哈。其它几类等着种好了在补充个结论。

4月 29

读《人生不设限》

  力克.胡哲一个从小就没有四肢的人。身残志坚,他至今已经在五大洲超过25个国家,举办了1500多场激励演讲。个人取得会计及财务规划双学位。从书中大家会看到一个精彩的人生。
  我是个没有宗教信仰的人,但是看到此书后,我看到了一个宗教,一种信仰给人带来的无穷力量。这本书大家应该读读,当让可以简单读读,去了解一人会有多大的潜力。努力、奋斗。
image