python
张小腿
这个作者很懒,什么都没留下…
展开
-
scrapy 批量插入更新mysql, kafka模版
Pipeline中写通用方法,模版在下方:def get_kafka_client(): client = KafkaClient(hosts=','.join(KAFKA_HOSTS), broker_version="1.1.0") return clientdef get_connect(): connect = pymysql.Connect( ...原创 2019-12-03 16:35:50 · 621 阅读 · 0 评论 -
python 删除list中某所有元素
突然记起来一年前刚入行时,领导面试我时提的问题,删除list中所有等于某个值的元素比如 删除 [1,2,3,4,1,2,3,4,1,3,4] 中所有的2元素删除元素常用 remove, pop 方法,remove可以直接删除某个值:list.remove(1)但是每次只能删除第一个,且如果list中不存在这个值则会抛出异常。 pop可以根据索引来删除:list...原创 2019-01-17 18:25:10 · 4591 阅读 · 1 评论 -
django update 失败
今天遇到一个bug,在django中,无论使用什么方法更新一条数据,均没作用,也不报错。后来排查出,原来是django中不能同时调用一个model类,比如:def fun_a(): User.objects.filter(x=1).update(y=2) return 123def fun_b(): user = User() user.aa = f...原创 2019-02-27 17:49:18 · 1592 阅读 · 0 评论 -
python3的坑之可迭代对象
当从python2转到python3时,在对list进行处理后经常会遇到结果不正常,经过查找发现python2 和python3对list处理后返回对象会有一些差别:在python2 中,map(), filter等对list进行处理的方法会返回一个list对象:而在python3中, 会返回一个可迭代对象:从以上我们可以发现python2对list 处理还是返回list 结果...原创 2019-04-16 10:05:59 · 273 阅读 · 0 评论 -
python mysql 批量插入
首先我们看看mysql的存入数据方法:插入数据:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)更新数据:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值那我们如果需要代码自动判断该插入还是更新呢?2种方法,但都有一个条件,mysql表中设置唯一索引,多字段可设置多个。RE...原创 2019-07-12 16:21:34 · 1635 阅读 · 0 评论 -
selenium "Can only set Cookies for the current domain"
使用selenium插入cookie时driver.add_cookie(cookie)出现 Can only set Cookies for the current domain原因是当前域与cookie作用域不同,只需要在插入之前访问一下cookie作用域下的域名即可driver.get(url)driver.add_cookie(cookie) ...原创 2018-12-29 16:39:52 · 1197 阅读 · 0 评论 -
验证码识别之图片处理(一些细节处理)
上一篇我们聊到了图片验证码处理的基本流程,已经可以应付绝大多数图片验证码了。验证码识别之图片处理(基础流程)------ 链接戳这里我们来看一下成果:可以看到应付我们的学习算法需求已经足够。今天我们来看看一些特殊图片的处理方法:1、带边框验证码:例如:这种处理方式比较显而易见,循环遍历时直接将i<2 or i>rows-3 or j<...原创 2018-10-29 18:17:27 · 1111 阅读 · 2 评论 -
验证码识别之图片处理(基础流程)
个人认为验证码识别的核心并不是学习算法的实现,而是图片的前期处理,处理的好直接丢进学习也能得到很高的识别成功率。其实使用什么语言没有关系,原理都是一样的,所以各位不用过于纠结是什么语言实现,主要是思路。本文代码均用python示例,源作者均为各博客,我只是拿来修改了部分,添加了一些可配置的参数,毕竟原代码已经写的很好了。言归正传,让我们看看一张普通的图形验证码:可以看到图片中有...原创 2018-10-16 16:40:06 · 1497 阅读 · 2 评论 -
数据采集或数据处理中去除多余空格,换行符等等的方法
采集或处理数据时,需求当有连续空格时保留一个空格,换行符存为一个空格xpath中可以采用 normalize-space() 方法:root.xpath('normalize-space(string(//*))')当需要在数据处理中操作时,可先将字符串分割为list,再进行拼接:' '.join(_string.split()) ...原创 2018-08-08 16:33:36 · 3884 阅读 · 0 评论 -
scrapy脚本运行测试
scrapy运行方法为命令行输入scrapy crawl spider当我们需要在脚本中运行时,可以这样:from scrapy import cmdlinecmdline.execute('scrapy crawl spider'.split())当我们一个项目里有多个爬虫时,如果使用上述方法,只会运行第一个爬虫from scrapy import cmdline...原创 2018-09-04 13:56:35 · 539 阅读 · 0 评论 -
通用时间格式化,字符串转datetime格式
将时间字符串转化为datetime格式:# -*- coding: utf-8 -*-import reimport datetimedef format_time(str): str = str.replace('年', '-').replace('月', '-').replace('日', '').replace('/', '-').replace('\\', '-')...原创 2018-09-04 15:53:07 · 536 阅读 · 0 评论 -
面对js加密时破解全流程 python版
遇到各种密码加密,参数加密时,当加密较为复杂时,不好使用python重写加密方法。这时候我们可以找到对应js代码,并直接调用js中的方法。流程如下:这是一个网站发送短信验证码的页面,其参数被加密过:定位到获取验证码的按钮搜索找到该方法:发现该方法中并未进行加密,推测在ajaxDirect中,还是找到该方法:可以发现该方法为传入url后对参数进行拆分,...原创 2018-09-11 13:33:49 · 2064 阅读 · 0 评论 -
scrapy编码问题--终极版
爬虫遇到编码不对的情况是家常便饭,普通情况我就不一一说明了,一般常用.encode('utf-8').decode('utf-8')编码-解码两个方法,多试几次总能解决。当遇上一种情况,不管怎么调都无法转换正常编码的情况下,是由于在请求时需要直接对 response 进行编码转换。即对应 requests 的r = requests(url)r.encoding = '...原创 2018-09-13 11:40:16 · 1064 阅读 · 0 评论 -
scrapy 自定义图片路径保存,并存到数据库中
scrapy中有个自带的pipeline工具,ImagesPipeline,可以专门用来储存图片到本地。但默认储存地址无法配置,所以我们需要写一个自己的pipeline用于储存图片。先分析一下我们的需求:1.修改图片路径,路径根据采集到的item中的数据变化;2.将数据库中保存图片的url更改为我们的本地文件路径。 首先需要继承原pipeline:class Down...原创 2018-09-18 17:15:10 · 1836 阅读 · 2 评论 -
celery的坑之任务分级
celery链式分发任务:task1.si(**kwargs)|task2.si(**kwargs)|last.si(**kwargs)即按task1, task2, last的顺序分发任务当执行为单个任务时,任务会很顺畅执行。但时,当程序分布式高并发执行时,会发生任务虽然都丢进了队列中,但是执行优先级无法控制。比如上一个任务的last丢进队列后,后面的新开始的task任务也...原创 2018-10-15 17:56:29 · 498 阅读 · 1 评论 -
利用redis搭建分布式爬虫
项目需求为采集所有400开头的企业电话。企业电话有 ['4000', '4001', '4006', '4007', '4008', '4009'] 六种开头,共计600W条,每条一次请求,共600W次请求。由于时间较紧,需采用分布式爬取策略。任务分析:1、scrapy-redis会存储需要爬取的url,但url太长,会多占用redis服务器内存空间。2、redis中不能同时存...原创 2018-08-06 17:41:53 · 260 阅读 · 0 评论