Python 字典的原理及高级用法

算算时间有段时间没写技术类的文章了,部分原因是最近过得确实比较忙。当然,也并没有忙到完全抽不出时间写博客,根本原因还是没有找到啥好的写作素材,随随便便糊弄一篇我又有点不好意思发上来,于是乎,就一直搁置到现在。     阅读全文
WincerChan's avatar
WincerChan 5月 12, 2018

爬虫模拟登录之一般性解决方法(Cookie)

前言前几周写了一篇文章,介绍了如何利用 post 方法来验证登录的问题,我也是一直在使用此方法登录豆瓣爬取一些信息,可是前两天突然就不能用了。我也再次查看了豆瓣的源代码,确认了豆瓣的验证信息并没有发生改变,但就是一直登录不上去,我猜想到可能是这个方法行不通了,于是我就换了一个思路:之前的思路是需要将 post 提交的表单数据保存在一个 session 的实例中,然后调用这个 session 实例的 get 方法就可以使用之前保存的数据。 而现在这一方法失效了,我猜想就是 post 方法提交数据这一步出了问题。那么就换一个思路,直接将服务器返回的数据存入 session,那么这个数据具体是什么?从哪儿来呢?这就是这篇文章所要谈到的。     阅读全文
WincerChan's avatar
WincerChan 8月 31, 2017

爬虫模拟登录

前言 有时候就在想,要是所有的网站对爬虫友好该多好。 当然这是不可能的:网站重要的数据往往就是一个产品的价值所在,如果被我们轻松的获取,这自然对网站经营者来说是一种损失,所以就有了以下各种策略去阻碍爬虫: User-Agent 检测 帐号及 Cookie 验证 验证码 限制 IP 次数或频率 这篇文章主要来说说如何解决验证码问题。     阅读全文
WincerChan's avatar
WincerChan 8月 13, 2017

Python 实现多线程下载器

前言我为什么会想到要写一个下载器呢,实在是被百度云给逼的没招了,之前用 Axel 配合直链在百度云下载视频能达到满速,结果最近两天 Axel 忽然不能用了,于是我就想着要不干脆自己写一个吧,就开始四处查询资料,这就有了这篇博客。 我假设阅读这篇博客的你已经对以下知识有所了解: Python 的文件操作 Python 的多线程 Python 的线程池 Python 的 requests 库 HTTP 报文的首部信息     阅读全文
WincerChan's avatar
WincerChan 7月 19, 2017

Python 的迭代器和生成器

我最初接触 Python 是在 17 年 2 月份,现在半年过去了,对迭代器和生成器的概念却及其有限,其实也是因为其它主流语言如:C、Java 中没有生成器的概念,所以当时学了就忘了。现在正准备好好复习一下迭代器和生成器。 容器容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代(即可以通过 for 循环去遍历)获取,可以用 in,not in 关键字判断元素是否包含在容器中。 在 Python 中,常见的容器对象有: list, deque set, frozensets dict, defaultdict, OrderedDict, Counter tuple, namedtuple str     阅读全文
WincerChan's avatar
WincerChan 7月 02, 2017

导出 QQ 聊天记录

前言从 2013 年开始,手机 QQ 就已经不支持私人聊天记录的导出功能了(群聊的记录还是可以导出),目的当然是为了推广超级会员,毕竟超级会员的聊天记录有 2 年漫游时间,而不想给腾讯送钱的我,就只好另辟蹊径了。     阅读全文
WincerChan's avatar
WincerChan 7月 01, 2017

Python 正则表达式

目前在跟 Udacity 的 cs212 课程,避免懒癌发作,开篇博客来记录一下 Python 的正则表达式正则表达式模式 special example match * a* ‘’, a, aa, aaa, . . . ? a? ‘’, a, . . . . . a, b, c, 7, ! . . . ^ ^b ba, bb, . . . abc $ a$ ba, . . . ab ‘’ ‘’ ‘’ a a a ba bba ba, aa, bb     阅读全文
WincerChan's avatar
WincerChan 5月 26, 2017