Notes and thoughts from Tony

像 UICollectionView 一样重写 UIScrollView 的代理属性

        UIScrollView 有包含一个 UIScrollViewDelegate 的代理属性: public protocol UIScrollViewDelegate : NSObjectProtocol { //... } open class UIScrollView : UIV...

Scrapy 和 Tor

        不太好分类,所以就分到了“编程思想”中,你懂的。 Scrapy 集成 Tor,又是一坑。 安装 Tor(The Onion Router,洋葱路由器)是实现匿名通信的自由软件。更通俗的内容查看关于 TOR 的常见问题解答,链接打不开的话,说明你还没准备好打开新世界的大门。 Tor 的安...

Scrapy 代理指南

        之前提到了使用动态代理可以有效防止爬虫被 ban。但是真正研究起来,又会遇到不少问题。 使用动态代理 主要是中间件的配置: class Mode: (RANDOMIZE_PROXY_EVERY_REQUESTS, RANDOMIZE_PROXY_ONCE, ...

Scrapy 调试技巧

        本文介绍了调试爬虫的最常用技巧。看下面的代码: import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = 'myspider' start_urls = ( ...

Scrapy 防 ban 指南

        大多数网站都使用了不同程度的防爬机制,要想抓取到更多的信息,就必须采取相应的策略。 关闭 ROBOTSTXT_OBEY settings.py 中,否则大部分网站对爬虫都不怎么欢迎: ROBOTSTXT_OBEY = False 动态设置 user agent 执行 $ scrap...

Podfile 语法参考

        Podfile Podfile 用于描述一个或多个 Xcode 项目的 targets 的依赖关系。 Podfile 可以很简单: target 'MyApp' pod 'AFNetworking', '~> 1.0' 复杂一些的: platform :ios, '9.0' ...

Swift 扩展中使用存储属性

        Swift Extensions 的主要局限在于,没法添加存储属性。不过可以通过其他方案实现。 前言 Swift Extensions 可以为现有的类添加方法、结构体、枚举或协议,是比较常用的 Swift 特性之一。但是,Swift 没有直接实现在扩展中持有某些对象作为属性的功能。本文就是...

SwiftFormat 使用指南

        目录 什么是 SwiftFormat? 为什么要用 SwiftFormat? 使用指南 命令行工具 Xcode Source Editor Extension 其他 工作原理 选项 ...

Scrapy 教程

        前言 本文使用 Scrapy 创建一个示例爬虫。Scrapy 安装就略过了,使用 pip 安装很简单。 创建项目 执行命令: $ scrapy startproject scrapydemo 得到输出: New Scrapy project 'scrapydemo', using...

Scrapy 架构介绍

        前言 目前来看,Python 最适合练手的项目就是爬虫了。Requests、BeautifulSoup 之类的单拿出来都有点像玩具,于是想试下 Scrapy。这篇先介绍下 Scrapy 的架构,主要内容来自官方文档 Architecture overview,展示了 Scrapy 的架构以及...