12 2018 档案
摘要:碰到一个日期选择,并将日期存储到数据库的需求,需要利用bootstrp的datetimepicker插件获取选定日期,并将其转换为指定字符窜,简单记录下实现的过程。 1. datetimepicker插件的使用 关于datetimepicker插件的官方文档: http://www.bootcss.
阅读全文
摘要:同源策略:所谓同源是指,域名,协议,端口相同,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器都会使用这个策略。当浏览器同时打开两个tab页面(两个不同服务器提供),tab1页面发送请求时,浏览器会检测是否是向tab1的服务器发出请求,若是向tab2的服务器
阅读全文
摘要:除了在html中自己手写form表单外,django还可以通过 继承django.forms.Form 或django.forms.ModelForm两个类来自动生成form表单,下面依次利用三种方式来实现form表单,实现向数据库中添加书籍的页面,效果如下: 首先在models类中定义了Book,
阅读全文
摘要:当有大量url需要下载时,串行爬取速度较慢,需要使用多线程、多进程进行爬取,以及部署分布式爬虫等 1.多线程爬虫 下面代码中三个线程时,爬取61个url,花费16-25s;五个线程时,花费41-55s。(线程间的切换也消耗时间) 2.多进程爬虫 2.1 多进程 下面代码中两个进程,爬取61个url,
阅读全文
摘要:对于网页上的有些内容,需要进行一定的交互操作,才能拿到相应的数据,例如常见的ajax请求等。为了抓取ajax请求的结果,可以通过ajax请求的url,抓取返回结果,也可以利用Selenium模块来模拟网页ajax。简单记录下一段学习过程。 1.问题分析 如下面我爱我家的网页中(https://wh.
阅读全文
摘要:通过Resquest或urllib2抓取下来的网页后,一般有三种方式进行数据提取:正则表达式、beautifulsoup和lxml,留下点学习心得,后面慢慢看。 1. 正则表达式 参考文档: 正则表达式30分钟入门教程 python3 re模块 看完文档后理解正则表达式的基本概念就行,然后知道贪婪匹
阅读全文
摘要:对于爬取下来的网页进行缓存,可以方便下次访问,无需再次下载。实现过程可以分为两大块,一是实现下载器,二是实现缓存器。 1. 下载器: 下载器功能:下载时先查看缓存中是否保存url对应的文件,不存在时再去访问网页端,并将结果加入到缓存中,下载器代码如下: 在爬取网页时,使用下载器代码如下: 2. 缓存
阅读全文
摘要:1,相关知识 robots.txt: 一些网站会定义robots.txt文件(https://www.example.com/robots.txt),规定了网页爬取的相关限制,查看其内容,遵守规则可以避免过早IP被封。 下面为知乎robots.txt部分内容(https://www.zhihu.co
阅读全文
摘要:1. 图的相关概念 树是一种特殊的图,相比树,图更能用来表示现实世界中的的实体,如路线图,网络节点图,课程体系图等,一旦能用图来描述实体,能模拟和解决一些非常复杂的任务。图的相关概念和词汇如下: 顶点vertex:图的节点 边Edge:顶点间的连线,若边具有方向时,组成有向图(directed gr
阅读全文
摘要:1,二叉树(Binary tree) 二叉树:每一个节点最多两个子节点,如下图所示: 相关概念:节点Node,路径path,根节点root,边edge,子节点 children,父节点parent,兄弟节点sibling, 子树subtree,叶子节点leaf node, 度level,树高high
阅读全文
摘要:1, 无序链表(Unordered linked list) 链表是有若干个数据节点依次链接成的数据结构,如下图所示,每一个数据节点包括包括数据和一个指向下一节点的指针。(python中的list就是由链表来实现的) 无序链表操作: python实现无序链表 定义了Node类和UnorderedLi
阅读全文
摘要:1,查找算法 常用的查找算法包括顺序查找,二分查找和哈希查找。 1.1 顺序查找(Sequential search) 顺序查找: 依次遍历列表中每一个元素,查看是否为目标元素。python实现代码如下: #无序列表 def sequentialSearch(alist,item): found =
阅读全文