随笔分类 -  python成长之路

积少成多,一步一步成长!见证自己的python正常之路
摘要:在看闭包问题之前先来看看关于python中作用域的问题 变量作用域 对于上述代码中出现错误,肯定没什么疑问了,毕竟b并没有定义和赋值,当我们把代码更改如下后: 再看一个例子: 首先这个错误已经非常明显:说在赋值之前引用了局部变量b 可能很多人觉得会打印10然后打印6,其实这里就是涉及到变量作用域的问 阅读全文
posted @ 2017-11-17 23:57 fan-tastic 阅读(2366) 评论(3) 推荐(2) 编辑
摘要:future初识 通过下面脚本来对future进行一个初步了解:例子1:普通通过循环的方式 例子2:通过future方式实现,这里对上面的部分代码进行了复用 分别运行三次,两者的平均速度:13.67和1.59s,可以看到差别还是非常大的。 future future是concurrent.futur 阅读全文
posted @ 2017-10-16 23:28 fan-tastic 阅读(17829) 评论(0) 推荐(2) 编辑
摘要:常用用法 t.is_alive() Python中线程会在一个单独的系统级别线程中执行(比如一个POSIX线程或者一个Windows线程)这些线程将由操作系统来全权管理。线程一旦启动,将独立执行直到目标函数返回。可以通过查询一个线程对象的状态,看它是否还在执行t.is_alive() t.join( 阅读全文
posted @ 2017-10-15 16:59 fan-tastic 阅读(2774) 评论(0) 推荐(0) 编辑
摘要:从语法上来看,协程和生成器类似,都是定义体中包含yield关键字的函数。yield在协程中的用法: 在协程中yield通常出现在表达式的右边,例如:datum = yield,可以产出值,也可以不产出--如果yield关键字后面没有表达式,那么生成器产出None. 协程可能从调用方接受数据,调用方是 阅读全文
posted @ 2017-10-06 17:32 fan-tastic 阅读(21283) 评论(4) 推荐(8) 编辑
摘要:所有的生成器都是迭代器 关于迭代器和生成器的一种定义:迭代器用于从集合中取出元素;生成器用于凭空生成元素。 Python中,所有的集合都是可以迭代的,在Python语言内部,迭代器用于支持: for 循环 构建和扩展集合类型 逐行遍历文本文件 列表推导,字典推导,集合推导 元组拆包 调用函数时,使用 阅读全文
posted @ 2017-10-04 23:31 fan-tastic 阅读(2720) 评论(1) 推荐(0) 编辑
摘要:Gevent官网文档地址:http://www.gevent.org/contents.html 基本概念 我们通常所说的协程Coroutine其实是corporate routine的缩写,直接翻译为协同的例程,一般我们都简称为协程。 在linux系统中,线程就是轻量级的进程,而我们通常也把协程称 阅读全文
posted @ 2017-09-17 18:32 fan-tastic 阅读(30747) 评论(4) 推荐(2) 编辑
摘要:pycharm是一个非常强大的python开发工具,现在很多代码最终在线上跑的环境都是linux,而开发环境可能还是windows下开发,这就需要经常在linux上进行调试,或者在linux对代码进行编写,而pycharm提供了非常便捷的方式。具体实现在windows上远程linux开发和调试的代码 阅读全文
posted @ 2017-09-11 23:56 fan-tastic 阅读(3211) 评论(2) 推荐(2) 编辑
摘要:因为现在很多网站为了限制爬虫,设置了为只有登录才能看更多的内容,不登录只能看到部分内容,这也是一种反爬虫的手段,所以这个文章通过模拟登录知乎来作为例子,演示如何通过scrapy登录知乎 在通过scrapy登录知乎之前,我们先通过requests模块登录知乎,来熟悉这个登录过程 不过在这之前需要了解的 阅读全文
posted @ 2017-08-21 20:29 fan-tastic 阅读(9183) 评论(7) 推荐(3) 编辑
摘要:总架构理解Middleware 通过scrapy官网最新的架构图来理解: 这个图较之前的图顺序更加清晰,从图中我们可以看出,在spiders和ENGINE提及ENGINE和DOWNLOADER之间都可以设置中间件,两者是双向的,并且是可以设置多层. 关于Downloader Middleware我在 阅读全文
posted @ 2017-08-11 14:39 fan-tastic 阅读(6152) 评论(2) 推荐(0) 编辑
摘要:爬虫与发爬虫的厮杀,一方为了拿到数据,一方为了防止爬虫拿到数据,谁是最后的赢家? 重新理解爬虫中的一些概念 爬虫:自动获取网站数据的程序反爬虫:使用技术手段防止爬虫程序爬取数据误伤:反爬虫技术将普通用户识别为爬虫,这种情况多出现在封ip中,例如学校网络、小区网络再或者网络网络都是共享一个公共ip,这 阅读全文
posted @ 2017-08-09 16:53 fan-tastic 阅读(20595) 评论(30) 推荐(32) 编辑
摘要:按照上一篇文章中我们将代码放到远程主机是通过拷贝或者git的方式,但是如果考虑到我们又多台远程主机的情况,这种方式就比较麻烦,那有没有好用的方法呢?这里其实可以通过scrapyd,下面是这个scrapyd的github地址:https://github.com/scrapy/scrapyd 当在远程 阅读全文
posted @ 2017-08-08 20:41 fan-tastic 阅读(5096) 评论(3) 推荐(0) 编辑
摘要:关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列。 分布式架构 我将上图进行再次更改 这里重要的就是我的队列通过什么维护?这里一般我们通过Redis为维护,Re 阅读全文
posted @ 2017-08-08 13:31 fan-tastic 阅读(6332) 评论(10) 推荐(2) 编辑
摘要:Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv。 该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一 阅读全文
posted @ 2017-08-07 14:40 fan-tastic 阅读(71788) 评论(1) 推荐(6) 编辑
摘要:常见的登录方式有以下两种: 上面只是简单的描述,下面是详细的针对两种登录方式的时候爬虫的处理方法 第一种情况 这种例子其实也比较多,现在很多网站的登录都是第一种的方法,这里通过以github为例子: 分析页面 获取authenticity_token信息 我们都知道登录页面这里都是一个form表单提 阅读全文
posted @ 2017-08-04 11:59 fan-tastic 阅读(17303) 评论(8) 推荐(8) 编辑
摘要:爬取的思路 首先我们应该找到一个账号,这个账号被关注的人和关注的人都相对比较多的,就是下图中金字塔顶端的人,然后通过爬取这个账号的信息后,再爬取他关注的人和被关注的人的账号信息,然后爬取被关注人的账号信息和被关注信息的关注列表,爬取这些用户的信息,通过这种递归的方式从而爬取整个知乎的所有的账户信息。 阅读全文
posted @ 2017-07-21 02:42 fan-tastic 阅读(17050) 评论(12) 推荐(5) 编辑
摘要:关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么是Cookie 其实简单的说就是当用户通过http协议访问一个服务器的时候,这个服务器会将一些Nam 阅读全文
posted @ 2017-07-20 15:00 fan-tastic 阅读(15840) 评论(2) 推荐(8) 编辑
摘要:这篇文章中写了常用的下载中间件的用法和例子。Downloader Middleware处理的过程主要在调度器发送requests请求的时候以及网页将response结果返回给spiders的时候,所以从这里我们可以知道下载中间件是介于Scrapy的request/response处理的钩子,用于修改 阅读全文
posted @ 2017-07-18 01:07 fan-tastic 阅读(16255) 评论(9) 推荐(4) 编辑
摘要:当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或者被丢弃而不再进行处理 item pipelin 阅读全文
posted @ 2017-07-17 16:39 fan-tastic 阅读(17838) 评论(1) 推荐(1) 编辑
摘要:Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据,总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 我们以通过简单的分析源码来理解我通常在写spiders下写爬虫的时候,我们并没有写start_requests来处理start_urls中的 阅读全文
posted @ 2017-07-17 00:04 fan-tastic 阅读(8682) 评论(0) 推荐(4) 编辑
摘要:Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTML上。CSS是一门将HTML文档样式化语言,选择器由它定义,并与特定的HTML元素的样式相关联。 X 阅读全文
posted @ 2017-07-16 10:31 fan-tastic 阅读(12623) 评论(3) 推荐(5) 编辑