笔记之 Django & React 构建 TodoList

English Version:  https://today2tmr.com/en/2017/08/04/notes-for-todo-list-project-with-django-and-react

我有一个任务需要构建前后端分离的todolist。然而之前我甚至没有接触过向React和Django一样的web开发框架,所以有很多方法放在我面前难以抉择…
我将记录下构建TodoList的一些过程。

方法的选择

  • 直接用github上的模板。(链接在文章最后) 但是像todo-list一样的单个app比较简单我不想构建一个很大的工程。当然这些模板对我来说是极好的学习资源,日后可以慢慢阅读源码来加以学习。
  • 将前后端完全分离,用socket.io,superagent或是jquery里的ajax来交换服务端和客户端之间的数据。我在客户端访问服务端提供的API来获取数据,并用jquery来发送请求返回服务端以修改数据。
  • 仅用Django对单个简单app已经足够了。当然对于大型网站的开发人员来说会有些混乱。在采用第二个方法之前我已经仅用Django搭建了一个TodoList网站,虽然同样运用了Django Rest Framework,但我感觉它并没有对自身起到什么关键作用…
  • 仅用React。如果是一个暂时性的app,无需保存数据到数据库,那么可以将数据存储在Redux提供的Store中。并且可以通过API获取数据并动态渲染到页面上。

Continue reading “笔记之 Django & React 构建 TodoList”

Python 爬虫学习笔记目录

English Version: https://today2tmr.com/en/2017/07/18/directory-of-python-spider-study-notes

Python 爬虫学习笔记 – 第四周/单元12/股票数据Scrapy爬虫

English Version: https://today2tmr.com/en/2017/07/18/python-spider-study-note-week-fourunit-twelvescrapy-for-stock-data

参考: http://today2tmr.com/2017/07/18/python-爬虫学习笔记-第三周单元9股票数据定向爬虫/

介绍

功能描述

程序框架

  • Spiders: 处理网页爬取与解析的功能
  • Pipelines: 处理解析后的数据并存入文件

Continue reading “Python 爬虫学习笔记 – 第四周/单元12/股票数据Scrapy爬虫”

Python 爬虫学习笔记 – 第四周/单元11/Scrapy爬虫基本使用

English Version: https://today2tmr.com/en/2017/07/18/python-spider-study-note-week-fourunit-elevenbasic-use-of-scrapy

Scrapy爬虫的第一个实例

将页面http://python123.io/ws/demo.html存在demo.html文件中。

步骤:

  • STEP 1: 建立Scrapy爬虫工程 scrapy startproject python123demo

     

    • python123demo/: 外层目录
      • scrapy.cfg: 部署Scrapy爬虫的配置文件,将爬虫放在服务器上,配置相关操作接口,本例子不需要改变
      • python123demo/: Scrapy框架的用户自定义Python代码
        • __init__.py: 初始化脚本
        • items.py: Items代码模板(继承类)
        • middlewares.py: Middlewares代码模板(继承类)
        • pipelines.py: Pipelines代码模板(继承类)
        • settings.py: Scrapy爬虫的配置文件
        • spiders/: Spiders代码模板目录(继承类),含工程下的全部爬虫
          • __init__.py: 初始文件,无需修改
          • __pycache__/: 缓存目录,无需修改

Continue reading “Python 爬虫学习笔记 – 第四周/单元11/Scrapy爬虫基本使用”

Python 爬虫学习笔记 – 第四周/单元10/Scrapy爬虫框架

English Version: https://today2tmr.com/en/2017/07/18/python-spider-study-note-week-fourunit-tenscrapy-crawling-framework

https://scrapy.org/

Scrapy爬虫框架介绍

安装: pip install scrapy
测试: scrapy -h

  • 不是一个简单的函数功能库,而是一个框架。
  • Scrapy爬虫框架结构
    • 爬虫框架是实现爬虫功能的一个软件结构和功能组件的集合。
    • 半成品,能够帮助用户实现专业网络爬虫。
    • 7个部分,5+2结构
      • ENGINE
      • SPIDERS
      • ITEM PIPELINES
      • DOWNLOADER
      • SCHEDULER
      • MIDDLERWARE, SPIDERS和ENGINE的中间件
      • MIDDLERWARE, DOWNLOADER和ENGINE的中间件
    • 数据含爬虫请求和网络内容
    • 3条主要数据流路径
      • SPIDERS ---REQUESTS---> ENGINE ---REQUESTS---> SCHEDULER
      • SCHEDULER ---REQUESTS---> ENGINE ---REQUESTS---> DOWNLOADER(连接互联网) ---RESPONSE---> ENGINE ---RESPONSE---> SPIDERS
      • SPIDERS(处理RESPONSE后) ---ITEMS/REQUESTS---> ENGINE
        • ---ITEMS---> ITEM PIPELINES
        • ---REQUESTS---> SCHEDULER
    • 入口: SPIDERS
    • 出口: ITEM PIPELINES
    • SCHEDULER, DOWNLOADER, ENGINE已有功能实现
    • ITEM PIPELINES, SPIDERS: 用户编写
      • SPIDERS: 提供爬取链接,解析页面内容
      • ITEM PIPELINES: 处理提取后的信息

Continue reading “Python 爬虫学习笔记 – 第四周/单元10/Scrapy爬虫框架”

Python 爬虫学习笔记 – 第三周/单元9/股票数据定向爬虫

English Version: https://today2tmr.com/en/2017/07/18/python-spider-study-note-week-threeunit-ninedirectional-spider-for-stock-data

介绍

Continue reading “Python 爬虫学习笔记 – 第三周/单元9/股票数据定向爬虫”

Python 爬虫学习笔记 – 第三周/单元8/淘宝商品比价定向爬虫

English Version: https://today2tmr.com/en/2017/07/17/python-spider-study-note-week-threeunit-eightdirectional-spider-for-price-comparison-of-taobao-product

https://www.taobao.com/

实例介绍

功能描述

  • 目标:获取淘宝搜索页面信息,提取商品名称和价格
  • 理解:
    • 淘宝搜索接口
    • 翻页处理
  • 技术路线: request-re

以”书包”为关键词的搜索页第一页信息
https://s.taobao.com/search?q=书包&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170717

第二页
https://s.taobao.com/search?q=书包&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170717&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s=44

第三页
https://s.taobao.com/search?q=书包&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170717&bcoffset=4&ntoffset=4&p4ppushleft=1%2C48&s=88 Continue reading “Python 爬虫学习笔记 – 第三周/单元8/淘宝商品比价定向爬虫”

Python 爬虫学习笔记 – 第三周/单元7/Re(正则表达式)库入门

English Version: https://today2tmr.com/en/2017/07/17/python-spider-study-note-week-threeunit-sevenintroduction-to-reregular-expression

正则表达式的概念

  • regular expression / regex / RE
  • 用于简洁表达一组字符串
  • 通用的字符串表达框架
  • 判断字符串特征归属,匹配
  • eg:
    • ‘PY’开头,后续不超过10个字符,后续不含’Y’和’P’
    • PY[^PY]{0,10}

编译:

  • 将符合正则表达式语法的字符串转换为正则表达式特征。p=re.compile(regex)

正则表达式的语法

  • 由字符和操作符组成
操作符 说明 实例
. 表示任何单个字符
[] 字符集,对单个字符给出取值范围 [abc]表示a,b,c,[a-z]表示a到z单个字符
[^] 非字符集,对单个字符给出排除范围 [^abc]表示非a,非b,非c的单个字符
* 前一个字符0次或无限次扩展 abc*表示ab,abc,abcc,abccc等
+ 前一个字符1次或无限次扩展 abc+表示abc,abcc,abccc等
? 前一个字符0次或1次扩展 abc?表示ab,abc
| 左右表达式任意一个 abc|def表示abc,def
{m} 扩展前一个字符m次 ab{2}c表示abbc
{m,n} 扩展前一个字符m至n次(含n) ab{1,2}c表示abc,abbc
^ 匹配字符串开头 ^abc表示abc且在一个字符串开头
$ 匹配字符串结尾 abc$表示abc且在一个字符串结尾
() 分组标记,内部只能使用 | 操作符 (abc)表示abc,(abc|def)表示abc,def
\d 数字,等价于[0-9]
\w 单词字符,等价于[A-Za-z0-9]

Continue reading “Python 爬虫学习笔记 – 第三周/单元7/Re(正则表达式)库入门”

Python 爬虫学习笔记 – 第二周/单元6/中国大学排名定向爬虫

English Version:  https://today2tmr.com/en/2017/07/16/python-spider-study-note-week-twounit-sixdirectional-spider-for-ranking-of-chinese-universities

http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html

  • 功能描述
    • 输入:大学排名URL链接
    • 输出:大学排名信息的屏幕输出(排名,大学名称,总分)
    • 技术路线:requets-bs4
    • 定向:仅爬取输入的URL,不扩展
  • 可行性确定
    • 确认信息存储在HTML页面中(部分信息由JS动态生成)
    • 查看robots.txt,无爬虫限制
  • 设计程序结构
    1. 获取网页内容。getHTMLText()
    2. 提取信息放入合适的数据结构。二维数据,嵌套列表。fillUnivList()
    3. 利用数据结构展示并输出信息。printUnivList()

Continue reading “Python 爬虫学习笔记 – 第二周/单元6/中国大学排名定向爬虫”

Python 爬虫学习笔记 – 第二周/单元5/信息组织与提取方法

English Version: https://today2tmr.com/en/2017/07/16/python-spider-study-note-week-twounit-fiveway-to-organize-and-extract-information

信息标记的三种形式

信息标记

  • name
  • addr
  • 形成信息组织结构,增加信息维度
  • 可用于通信、存储和展示
  • 标记的结构具有重要价值
  • 更利于理解和利用

HTML的信息标记

  • WWW信息组织方式
  • 将声音、图像、视频等超文本信息嵌入到文本之中
  • 通过预定义<>…</>标签形式组织不同类型信息

Continue reading “Python 爬虫学习笔记 – 第二周/单元5/信息组织与提取方法”