- 博客(33)
- 收藏
- 关注
原创 赋值、深拷贝和浅拷贝的区别
import copya = [[1, 2], 3, {"key": "value"}]b = ac = copy.copy(a)d = copy.deepcopy(a)a[0].append(3)print(a)print(b)print(c)print(d)print(id(a))print(id(b))print(id(c))print(id(d))print...
2019-02-22 10:57:15 359 1
原创 15天学会爬虫 第十二天
爬虫第十二天分布式爬虫的实现创建爬虫类scrapy genspider itcast itcast.cn修改继承类为scrapy_reids中的RedisSpider删除原有的start_urls添加存在start_urls在redis数据库中的键from scrapy_redis.spiders import RedisSpiderclass Itcast...
2019-01-24 21:09:10 208
原创 15天学会爬虫 第十一天
爬虫第十一天scrapy流程的新理解start_urls谁构造的请求? def start_requests(self): for url in self.start_urls: yield Request(url, dont_filter=True)当爬虫开始运行时,首先引擎会调用爬虫类的start_requests()方法将start_urls列...
2019-01-22 18:16:19 355
原创 15天学会爬虫 第十天
爬虫第十天crawlspider的使用scrapy genspider -t crawl spider_name allowed_domainclass GtSpider(CrawlSpider): name = 'gt' allowed_domains = ['guokr.com'] start_urls = ['https://www.guokr.com/...
2019-01-21 20:08:06 264
原创 15天学会爬虫 第九天
爬虫第九天scrapy debug信息2019-01-19 09:50:48 [scrapy.utils.log] INFO: Scrapy 1.5.1 started (bot: tencent)2019-01-19 09:50:48 [scrapy.utils.log] INFO: Versions: lxml 4.2.5.0, libxml2 2.9.5, cssselect 1.0...
2019-01-21 19:47:27 219
原创 15天学会爬虫 第八天
爬虫第八天scrapy框架流程其流程可以描述如下:调度器把requests–>引擎–>下载中间件—>下载器下载器发送请求,获取响应---->下载中间件---->引擎—>爬虫中间件—>爬虫爬虫提取数据,分为两类:提取的是url地址,组装成request对象---->爬虫中间件—>引擎—>调度器提取数据—...
2019-01-21 09:26:27 222
原创 15天学会爬虫 第七天
爬虫第七天mongodbmongo 客户端连接dbdb 显示当前正在使用的数据库show dbs 显示所有数据use db(name) 使用指定数据库db.dropDatabase() 删除正在使用的数据库collectiondb.test 使用当前数据库下面的test集合进行操作,如果没有会自动创建show collecitons 显示当前数据库下的所有集合db...
2019-01-20 16:58:44 180
原创 15天学会爬虫 第六天
爬虫第六天selenium本次代码需要用到插件Chromedriver,安装方法selenium 入门pip install seleniumfrom selenium import webdirver# 创建一个Chrome的driver实例对象driver = webdriver.Chrome()# 访问人人登录页面driver.get(url = "http://w...
2019-01-20 13:41:42 166
原创 Windows,Mac下的Chromedriver的安装
Windows,Mac下的Chromedriver的安装在淘宝镜像下载对应版本的ChromedriverMac下的安装将下载好的文件解压,把解压的文件放入/usr/local/bin目录下,Linux用户同样Windows下的安装将解压的.exe程序放置在虚拟环境的script下,或者在python3的环境目录下...
2019-01-20 11:29:37 270
原创 Mongodb 在 Mac下的安装
Mongodb 在 Mac下的安装首先是下载对应的安装包https://www.mongodb.com/download-center/community官方网站不用翻墙都能访问选择你所对应的系统及想安装的版本,我这里是Mac安装版本为4.0.5下载后解压,双击就行.然后把解压的文件夹改个名字 mongodb然后在终端中把这个文件夹拷贝到local下mv mongodb /usr/...
2019-01-15 21:33:33 761
原创 15天学会爬虫 第五天
爬虫第五天多线程线程的创建和运行import multiprocessingdef task(num): passp1 = multiprocessing.Process(target = task)p1.start()守护线程一般情况下,主线程代码执行完毕后不会结束,会等待所有子线程任务结束后才结束如果将子线程设置为守护线程,意味着:主线程代码执行完毕,主线程和子...
2019-01-14 21:33:34 158
原创 15天学会爬虫 第四天
爬虫第四天正则表达式1.1 单个字符\d 数字0-9\s 空白字符 空格 \t \n\w 单词字符. 除了\n的任意字符[a-d0-9] 匹配a-d或者0-9中任意一个1.2 多个字符{m,n}前一个字符出现m-n次(包含m和n)* 匹配前一个字符任意次(0,1,多次)+ 匹配前一个字符至少一次(1或者多次)? 匹配前一个字符0次或1次1.3 re模块re....
2019-01-12 19:35:14 179
原创 15天学会爬虫 第三天
爬虫第三天1.三元运算符a = b if b else c # 如果b为真,a=b,否则a=cif b: a = belse: a = c2.requests处理cookies将cookie字符串直接放入headers中准备cookie字典,在requests请求实传入cookies参数中cookies_dict = {}requests.get(u...
2019-01-11 21:23:52 274 2
原创 15天学会爬虫 第二天
爬虫第二天1.Response的常用属性response.headers 响应头response.request.headers 请求头response.status_code 状态码response.request.url 请求的urlresponse.url 响应的url2. 带headers的请求headers = {"User-Agent":"一般从浏览器复制"}...
2019-01-11 19:55:36 238
原创 15天学会爬虫 第一天
1. 爬虫的用途1.爬取数据用做网站展示2.爬取数据用来为大数据或者人工智能服务2. 什么是爬虫?模拟浏览器发送请求,获取相应的数据3. 爬虫的分类3.1 通用爬虫搜索引擎的爬虫,爬取整个互联网的数据3.2 聚焦爬虫针对特定网站专门写的抓取数据的程序聚焦爬虫的流程准备url列表拿到一个url发起请求,获取响应响应提取提取的是数据,数据保存提取的是URL,放入URL...
2019-01-08 21:08:13 302
原创 live-server的安装与使用
前端文件开发中经常需要预览效果这里给大家推荐一个微型服务器live-server安装live-server之前需要安装node.js的版本控制工具nvm在终端中执行curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash这个步骤执行之后重新进入终端,使用使用nvm安装最新版...
2019-01-03 20:07:52 2486
原创 关于virtualenv的创建(以Ubuntu和Mac为例)
针对于不同项目有时候我们需要配置不同的环境,而我们并没有必要去配置多台设备,这时,虚拟环境能够帮助我们在一台设备里搭建不同项目所需要的环境首先需要安装virtualenvsudo pip install virtualenvsudo pip install virtualenvwrapper安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:# 1、创建目录用...
2019-01-03 09:53:46 204
原创 聊聊常用的幂等性
什么是幂等(Idempotency)?简单来说,一个操作如果具有任意多次执行所产生的影响均与一次执行的影响相同,我们就称之为幂等。这样说来,似乎很容易理解。但要知道,这样的定义,其实是一个语义范畴对行为结果的定义。如何用语法和规则去确保行为能达到这个结果,往往需要很谨慎的设计和实现。实际系统中,幂等是一个极为重要的概念。无论是在大型互联网应用还是企业级架构中,我们都见到 REST API 被越来...
2019-01-02 19:24:50 944
原创 js中双等和三等区别
js中双等和三等区别简单来说: == 代表相同, ===代表严格相同, 为啥这么说呢,这么理解: 当进行双等号比较时候: 先检查两个操作数数据类型,如果相同, 则进行三等比较, 如果不同, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较, 而三等比较时, 如果类型不同,直接就是false.操作数1 == 操作数2, 操作数1 === 操作数2比较过程:双等号==:(1)如果...
2018-11-09 15:22:11 6190
原创 mysql-installer-community-5.7.22.1在win下安装流程
mysql-installer-community-5.7.22.1 资源链接:https://pan.baidu.com/s/1QFIWAN7TbKRRv0pZNd-oAw 密码:ek4f选择自己适合的版本,我一般安装软件都选择的是自定义,你可以选择其他的版本。选择完你需要的部分,要点击那个箭头添加到右侧的列表中。一直下一步,直到下面这张图。点击Add User键入你...
2018-10-21 12:45:55 7104
原创 【转】高并发和大流量解决方案
#高并发架构相关概念#并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任意一个时刻上只有一个程序在处理机上运行。我们说的高并发是什么?上面的定义明显不是我们通常所言的并发,在互联网时代,所讲的并发、高并发,通常是指并发访问。也就是在某个时间点,有多少个访问同时到来通常如果一个系统的日PV在千万以上,有可能是一个高并发的系...
2018-10-21 09:52:38 680
原创 [转载]Python使用进程池解决线程中遇到的GIL锁问题
由于Python中线程封锁机制(GIL锁),导致Python中的多线程并不是正真意义上的多线程。当我们有并行处理需求的时候,可以采用多进程迂回地解决。如果要在主进程中启动大量的子进程,可以用进程池的方式批量创建子进程。首先,创建一个进程池子,然后使用apply_async()方法将子进程加入到进程池中。import multiprocessingimport osimport time...
2018-10-20 19:36:29 336
原创 [转载]多继承(钻石继承)的问题和解决
大家都知道继承的目的是为了让子类可以使用父类的成员,实现代码的复用,但是在多继承中会出现各种问题:class Father(object): def __init__(self, name): self.name = name print("Im father")class Son_1(Father): def __init__(self, a...
2018-10-20 18:56:28 232
原创 [转载]三次握手和四次挥手
三次握手在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。                          &n
2018-10-20 18:27:37 409
原创 一部分可能会用到的正则,后期继续维护
邮箱正则 ^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$url正则 ^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$手机号正则 ^((13[0-9])|(14[...
2018-10-14 19:04:12 144
转载 python魔法方法详解
python魔法方法详解据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切。他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的。Python 的魔术方法非常强大,然而随之而来的则是责任。了...
2018-09-16 10:38:02 432
原创 递归函数的基本概念
递归函数说白了就是一个自己调用自己的函数比方说def print_num(num): if num > 10: # 这是跳出的条件 return # 这是跳出的位置 else: print(num) num += 1 print_num(num)# 再次调用自己print_num(1)这就...
2018-09-14 21:45:50 1127
原创 关于Python中的全局变量和局部变量及其作用域
嗯,怎么说呢如果把程序比作一个学校那么全局变量就是校职员工,局部变量是学生(请不要讨论离职等操作拒绝杠精)当你毕业之后你就跟学校没什么关系了(方法结束)但是你的校长会一直呆到学校开不下去(程序结束)这个说的是全局变量和局部变量的作用域假设在班级内部有一个和校长同名的学生,那么在课堂内点名的时候,一定是这个学生答到,跟校长没什么关系。假设这个班级内部没有人与校长同名,...
2018-09-14 20:51:05 633
转载 Linux常用命令,以及vim编译器的命令,初学者试用
我正式接触的第一门语言应该算是C,那会接触的一个开发工具就是Linux里的vim,那会就单纯的觉得Linux里的命令很神奇,其实是因为可以装x 好了闲话不多说,下面为大家列几个Linux中常用的命令或者说刚刚接触这个系统并打算做开发时老师会介绍的不多但是挺实用的首先是关机重启什么的 关机 (系统的关机、重启以及登出 ) shutdown -h now 关闭系统(1) init 0...
2018-08-29 14:08:30 489
原创 查询
emmmmmmm是时候聊聊查询了查询查询所有字段select * from 表名;例:select * from students;查询指定字段select 列1,列2,... from 表名;例:select name from students;使用 as 给字段起别名select id as 序号, name as 名字, ...
2018-08-29 13:40:15 411
原创 数据库增删改的简单操作
数据库我的上一篇Blog简单列举了几种查询的方式方法等,写的很没有思路我觉得我需要重新梳理一下思路跟大家讨论下数据库数据库的操作归根结底是增删改查的操作那么再操作增删改查之前肯定的是我们需要有一个数据库供我们去操作,而且有相关的环境。我最早的那篇blog有关于mysql的软件下载并且没有积分要求需要的朋友可以移步https://blog.csdn.net/weixin_41950282...
2018-08-28 21:23:03 3563
原创 数据库的创建以及查询1
数据完整性 一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束数据类型 可以通过查看帮助文档查阅所有支持的数据类型 使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间 常用数据类型如下:...
2018-08-26 21:10:50 2430
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人