摘要: 如上图我们可以发现有些数据的数字变成了加密字体,我就去查看了一下网站的代码,结果发现网站的代码显示是这样的: 原来有些网站上使用了字体加密技术,为了解决这个问题,我找了大量的资料,可是网上的很多方法由于网站反爬技术的进步或者网站更新了字体加密规则已经不能使用了,于是我就开始了破解字体加密的艰辛历程。 阅读全文
posted @ 2019-03-10 22:34 hank-li 阅读(4619) 评论(1) 推荐(0)
摘要: 1. 安装hanziconv安装一个简繁体转换的包: 2. 自定义一个itempiples找到项目中的pipelines.py文件 添加自定义的pipeline: 此代码为本人项目代码,判断value为unicode,则转换为繁体; 若要将繁体转换为简体,请将toTraditional改为toSim 阅读全文
posted @ 2019-03-10 22:18 hank-li 阅读(308) 评论(0) 推荐(0)
摘要: Jupyter notebook运行之后,默认的工作目录在mac下是个人文件夹,在windows下貌似也是如此。显然不太合理,需要修改它。 具体办法是: 进入终端命令行模式,输入下面的代码: 注意generate前面是--,英文状态下的减号两个;后面的那个“-”前后都没有空格。然后可以看到配置文件的 阅读全文
posted @ 2019-03-10 01:51 hank-li 阅读(923) 评论(0) 推荐(0)
摘要: 1.高阶函数:特点:函数的形参位置必须接受一个函数对象分类学习:1).map(fn,lsd1,[lsd2...]):参数一:fn --> 函数对象参数二:lsd1 --> 序列对象(字符串、列表、range...)功能:将fn函数作用于lsd1中的每一个元素上,将每次执行的结果存入到一个map对象中 阅读全文
posted @ 2019-03-10 01:10 hank-li 阅读(346) 评论(0) 推荐(0)
摘要: 演示正则表达式的拓展内容:函数:finditer(regex,string,[flags=0]):参数:和match、search、findall一样理解功能:将所有匹配的数据封装为一个一个的match对象,然后以iterator返回 import re str1 = 'i love shangha 阅读全文
posted @ 2019-03-10 00:57 hank-li 阅读(188) 评论(0) 推荐(0)
摘要: 切割:split(regex,string):返回一个列表对象 import re str1='i love shenzhen so much' regex=r' +?' lt=re.split(regex,str1) print(lt) str2='dsafsa2341241dfakdsf3424 阅读全文
posted @ 2019-03-10 00:54 hank-li 阅读(750) 评论(0) 推荐(0)
摘要: 替换:sub(regex,repl,string,count,[flags=0]): 替换数据,返回字符串(已经被替换完成后的内容)subn(regex,repl,string,count,[flags=0]): 替换数据,返回元祖对象,此元祖有两个元素 第一个元素记录了替换以后的字符串内容, 第二 阅读全文
posted @ 2019-03-10 00:51 hank-li 阅读(1841) 评论(0) 推荐(0)
摘要: 演示正则中的替换和切割操作:在这之前我们先学习一个分组的概念:分组:在正则中定义(...)就可以进行分组,理解为得到了一个子组好处:1).如果正则中的逻辑比较复杂,使用分组就可以优化代码的阅读性(更有层级感)2).一旦进行了分组,在正则表达式的后半部分内容中很有可能需要引用子组中的内容; 一旦引用了 阅读全文
posted @ 2019-03-10 00:50 hank-li 阅读(338) 评论(0) 推荐(0)
摘要: 演示匹配多个字符:以下x、y、n都是变量名:分类:1).模糊匹配:x?:表示0个或者1个 取值范围:[0,1]x+:表示1个或者多个 取值范围:[1,无穷大)x*:表示0个或者多个 取值范围:[0,无穷大)【注意】以上三种符号(?、+、*)都满足贪婪匹配的特点,意味着在匹配的前提下,尽可能多的返回数 阅读全文
posted @ 2019-03-10 00:47 hank-li 阅读(562) 评论(0) 推荐(0)
摘要: 演示匹配锚字符(边界字符)^:从字符串头部开始匹配,在开启多行模式下(re.M),可以尝试匹配每一行的头部数据$:从字符串尾部开始匹配,在开启多行模式下(re.M),可以尝试匹配每一行的尾部数据A:从字符串头部开始匹配,在开启多行模式下(re.M),没有多行的概念,还是匹配第一行的头Z:从字符串尾部 阅读全文
posted @ 2019-03-10 00:13 hank-li 阅读(626) 评论(0) 推荐(0)
摘要: 1).匹配单个字符(数字、英文、其它)符号位:[]:表示一个字符位[0123456789]:表示一位,取值范围:[0,9]之间的任何一个值[0-9]:表示一位,取值范围:[0,9]之间的任何一个值d:表示一位,取值范围:[0,9]之间的任何一个值D:对d取反(匹配除了数字字符以外的所有字符)[135 阅读全文
posted @ 2019-03-10 00:10 hank-li 阅读(256) 评论(0) 推荐(0)
摘要: 4).函数:findall(regex,string,[flags=0]):参数:和match、search一样理解功能:将所有匹配成功的子数据(子串),以列表的形式返回;如果一个都没有匹配成功,那么返回一个空列表compile()配合search()使用: pat=re.compile(r'www 阅读全文
posted @ 2019-03-10 00:06 hank-li 阅读(943) 评论(0) 推荐(0)
摘要: 函数:search(regex,string,[flags=0]):参数:和match一样理解功能:从头开始匹配字符串中的数据,如果头不匹配继续往后尝试匹配,直到有第一个匹配成功的子数据,立即返回一个match对象;此时就算后面还有匹配的子数据,直接无视...当然匹配不成功,返回None值【注意】: 阅读全文
posted @ 2019-03-10 00:02 hank-li 阅读(728) 评论(0) 推荐(0)
摘要: 2).compile(regex,[flags=0]):返回一个Pattern对象(认为:它内部已经封装了一套regex和flags)可以再通过Pattern对象继续调用match函数(此时只需要传递一个参数:string即可)注意:以上函数中涉及的参数:regex、flags、string和re. 阅读全文
posted @ 2019-03-10 00:01 hank-li 阅读(544) 评论(0) 推荐(0)