Python爬虫学习笔记 – 第一周/单元二/盗亦有道: Robots.txt

English Version:  https://today2tmr.com/en/2017/07/15/python-spider-study-note-week-oneunit-twocode-of-conduct-robots-txt

网络爬虫的尺寸:

  • 爬取网页:小规模,数据量小,速度不敏感,用Requests库。>90%
  • 爬取网站:中规模,数据规模较大,速度敏感,用Scrapy库
  • 爬取全网:大规模,搜索引擎,爬取速度关键,定制开发

由于:

  • 受限于开发者的水平和目的,网络爬虫会给服务器带来巨大开销。
  • 数据归有权。
  • 隐私泄露。

Continue reading “Python爬虫学习笔记 – 第一周/单元二/盗亦有道: Robots.txt”

Python 爬虫学习笔记 – 第一周/单元1/Requests库入门

English Version: https://today2tmr.com/en/2017/07/15/python-spider-study-note-week-oneunit-oneintroduction-to-requests-library/

www.icourse163.org/course/BIT-1001870001

http://www.python-requests.org

安装: pip3 install Requests

简单应用:

  • 状态码200意味着获取成功页面内容。
  • 七个主要方法:
    • requests.request() 创建一个请求,其余方法的基本方法。
    • requests.get() 对应HTTP中的GET。
    • requests.head() 对应HTTP中的HEAD。
    • requests.post() 对应HTTP中的POST。
    • requests.put() 对应HTTP中的PUT。
    • requests.patch() 修改部分内容,对应HTTP中的PATCH。
    • requests.delete() 对应HTTP中的DELETE。

Continue reading “Python 爬虫学习笔记 – 第一周/单元1/Requests库入门”

[学习笔记] Windows和Linux下Socket编程中select的应用

English Version:  https://today2tmr.com/en/2017/06/30/study-note-select-in-socket-for-windows-and-linux/

基本概念

I/O模型

系统处理I/O的模型,I/O即send和recv

同步/异步(针对客户端)

  • 同步: 一件一件事做。 在功能调用(向服务端提交请求)未得到结果前,调用不返回。
  • 异步: 调用功能后客户端即可做其他事情,得到结果时收到通知。
  • 区别:  客户端访问数据时进程是否阻塞

阻塞/非阻塞(针对服务端)

  • 阻塞: 调用结果返回之前,线程进入休眠状态。(如recv函数)
  • 非阻塞: 不能立即得到结果的情况下,立即返回。当有结果时用select通知客户端回调。
  • 区别:  服务端是否立即返回

Continue reading “[学习笔记] Windows和Linux下Socket编程中select的应用”

网络编程之socket学习笔记

English Version: https://today2tmr.com/en/2017/06/29/network-programming-socket-learning-note/

由于初学,目的导向为理解,笔记将偏向于浅显而缺乏深度。

基本概念

  • 我们通常用IP和端口号去定位一个网络服务。
  • socket就想是电话线的两头,一旦电话接通,通讯就开始了。
  • 有三种形式的sockets,我们讨论其中的两种:
    • 流式套接字 SOCK_STREAM(TCP)
    • 数据包套接字 SOCK_DGRAM (UDP)

TCP与UDP的对比

  • 流式套接字 SOCK_STREAM(TCP)
    • 面向连接,数据正确性高,效率较低。
    • 服务端与客户端建立一对一连接,每次信息传递均有正确性校验,保证数据准确到达目的地。
  • 数据包套接字 SOCK_DGRAM (UDP)
    • 无连接,数据可能丢失,高效率。
    • 服务端和客户端均只需1个套接字。就像快递站,填写邮寄信息即可向任一地点发货。
    • 如语音、视频通话同网络通讯通常采用UDP以获得高效传播速率,偶尔的数据丢失也不会造成大的影响。

Continue reading “网络编程之socket学习笔记”

python3.Tkinter学习之更多Widgets

译自www.tkdocs.com

这篇译文由于是急于学习顺便写的,将选举出几个可能在后面的项目中会用到的widgets,不全部涉及。

Listbox

Widget综述
一个listbox显示一个单行文本项目的列表,允许浏览和选择其中的单个或多个。
创建:
l = Listbox(parent,height=10)

管理listbox中的元素

每个listbox有一个listvariable的配置选项,允许关联一个含有列表的变量到listbox。列表中的每个元素是一个字符串,表示了listbox中的一项。所以对listbox中每一项的操作可以通过调整关联变量。简单来说,要找出listbox的第三行是什么,只用看listvariable的第三个元素。

选择项目

  • 单选和多选可以通过selectmode这一配置选项来设定。
  • 单选值为browse;多选值为extended
  • 要找出当前选定了哪些项,可以调用curselection方法。
  • 可绑定虚拟事件 <ListboxSelect>

Continue reading “python3.Tkinter学习之更多Widgets”

文本中特殊符号的处理

English Version: https://today2tmr.com/en/2017/06/28/text-edition-for-special-sign/

有时我们需要替换或着用以替换制表符,换行符等特殊字符,普通文本编辑器却做不到,下面是解决这个问题的几行代码。

保存下面代码为 replace.py,python3 replace.py 运行即可。

 

python3.Tkinter学习之网格图形管理器

译自Modern Tkinter for Busy Python Developers

本章主要是译者的归纳整理,并未全部按原文翻译。
一般地,我们通过使用grid方法来设置widget在容器中的布局。
例如: label.grid()

行和列 column and row

通过设置columnrow来定位widget。
label.grid(column=1,row=1)
默认情况下,column=0,row=0。

合并单元

通过设置columnspanrowspan可以合并多个单元。
label.grid(column=1,row=1,columnspan=2,rowspan=2)
默认情况下,columnspan=1,rowspan=1。

Continue reading “python3.Tkinter学习之网格图形管理器”

python3.Tkinter学习之基本Widgets

译自Modern Tkinter for Busy Python Developers

本章介绍一些几乎可以在任何用户接口中找到的Widgets:frames, labels, buttons, checkbuttons, radiobuttons, entries and comboboxes。

0X01 Frames

Widget综述

一个frame就是一个简单的长方形widget。Frames用来作为其它widgets的容器,这些widgets受控于图形管理器例如gird。

创建:frame = ttk.Frame(parent)

Frames有一些配置选项可以改变其显示方式:

  • 尺寸 ttk.Frame(parent,height=350,width=350)
    • 350 是 350 像素
    • 350c 是 350 厘米
    • 350i 是 350 英寸
    • 350p 是 350 printer’s points(1/72英寸)
  • Padding frame["padding"]=(5,10)
    • (a) 上下左右padding均为a
    • (a,b) 水平方向padding为a,垂直为b
    • (a,b,c,d) 左,上,右,下的padding分别为a,b,c,d
  • 边界 frame["borederwidth"]=2
    • 边界的显示方式配置选项为relief。有flat,raised,sunken,solid,ridge,groove几个可选值。

Continue reading “python3.Tkinter学习之基本Widgets”

python3.Tkinter学习之Tk概念

译自Modern Tkinter for Busy Python Developers

与pyQt,wxPython相比tkinter较为简单,我用来制作小型GUI程序,省去了很多较为深入的知识,只保留了常用部分。

Widgets

Widget 类

Widget是对象,表示Button, frame等类的实例。

窗口的分层结构

另一件需要知道的事是创造的widget实例的父级。Tk中,所有的widgets都是窗口分层结构中的一部分,单个root作为分层结构的顶部。这个结构可以有任意深度,你可以在一个root窗口中建一个frame,frame包含另一个frame,frame又包含一个button。甚至一个新的顶级窗口是同样结构中的一部分,它的内容组成整体窗口分层结构中的子树。

在常见例子中,我有单个frame作为root窗口的孩子,这个frame控制着其他所有孩子。root窗口是frame是容器,及父级。

Alt text

Continue reading “python3.Tkinter学习之Tk概念”

Share and Study

 

English Version: https://today2tmr.com/en/2017/05/25/share-and-study/

这个网站将用于分享我在课内课外学到的知识,涉及包含编程和网络在内的各个信息技术相关领域。

由于大部分的基础知识在互联网上很容易搜索得到,我将会以项目的形式综合运用各个知识点,在实践中提高技术。

最后……为了顺便提高下英文能力,每一篇文章都会采用双语的模式。感谢指正语法错误或不恰当的地方!