testst

字符串
1、a.split()
b = a.split(’,’)
按照符号分割字符串组成新的列表
a.split(str="", num=string.count(str))

参数
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
num – 分割次数。默认为 -1, 即分隔所有

2、a.replace()
b = a.replace(old, new[, max])

参数
old – 将被替换的子字符串
new – 新字符串,用于替换old子字符串
max – 可选字符串, 替换不超过 max 次

3、len(a)
a如果为字符串,返回字符串长度
a如果为列表,返回元素个数

4、a[:]
a[1:5]
返回第2-4个字符

5、a.capitalize()
将字符串第一个字符改为大写

6、a.casefold()
将整个字符串改为小写

7、a.isalpha()
如果字符串至少有一个字符并且其他所有字符都是字符返回True,否则False

8、a.islower()
如果字符串只包含数字则返回True,否则False

9、a.islower()
如果字符串中至少包含一个区分

10、a.isspace()
如果字符串中只包含空格则返回True,否则False

11、a.join()
a.join(sub)
以字符串为分隔符,插入到sub中所有的字符之间

12、a.lstrip()
b = a.lstrip()
去掉字符串左边的所有空格

13、a.rstrip()
b = a.rstrip()
去掉字符串右边的所有空格

14、a.partition()
a.partition(sub)
找到字符串sub把字符串分成左,sub,右三个元组

又例:
str = ‘青花瓷(live版)’
head, sep, tail = str.partition(’(’)
print(head)

15、a.split()
a.split(sep=None,maxsplit=-1)
不带参数默认以空格为分隔符切片字符串,maxsplit表示仅分隔mxsplit个字符串

16、a.swapcase()
翻转字符大小写

17、a.find()
a.find(str, beg=0, end=len(string))+21
检测字符串中是否包含子字符串str,如果指定beg(开始)和 end(结束)范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
后面+多少表示向后偏移多少位

18、a.format()
把字符串中{}替换为format中的字符
‘ab{}d’.format(‘c’)

abcd

19、str.rjust()
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串
str.rjust(width[, fillchar])

参数
width
指定填充指定字符后中字符串的总长度

fillchar
填充的字符,默认为空格

列表
1、del a[index]
del 可以删除列表中的单个元素,a表示列表名称,index表示元素的索引值

2、a.append()
a.append(‘abc’)
将一个字符串添加到列表最后一个元素

3、a.extend()
a.extend([‘abc’,‘123’])
将一个列表添加到列表最后

4、a.insert()
a.insert(1,‘abc’)
将abc插入到第二位元素

5、a.remove()
a.remove(‘abc’)
将一个字符串从列表中移除

6、a.pop()
默认移除列表中最后一位元素

7、列表分片
a = [1,2,3,4]
a[1:3] = 1,2
列表分片会得到原来列表的拷贝
也可以a[:3],a[1:],a[:]

8、a.count()
a.count(‘abc’)
返回一个字符串在列表中出现的次数

9、a.index()
a.index(‘abc’,0,2)
返回一个字符串在列表中第一次出现的位置,后两个参数限制搜索范围

10、a.reverse()
将列表元素顺序倒过来

11、a.sort()
将列表元素升序排列

参数
func:指定排序的算法
key:与算法搭配的关键字
reverse:=True降序,=False升序

字典
1、创建字典
字典是另一种可变容器模型,且可存储任意类型对象
字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,分割,整个字典包括在花括号{}中
a = {key1 : value1, key2 : value2 }
dict1 = { ‘abc’: 456 }

2、访问字典里的值
dict = {‘Name’: ‘Runoob’}
print (dict[‘Name’])

Runoob

3、访问字典的键
dict = {1:‘a’, 2:‘b’}
for i in dict:
print(i)

1
2

4、向字典中添加新键
a.update({1:‘a’, 2:‘b’})

5、获取字典的全部键
print(list(a.keys()))

[1,2]

6、获取字典的全部值
print(list(a.values()))

[‘a’,‘b’]

7、获取字典的全部键值对
print(list(a.items()))

[(1,‘a’),(2,‘b’)]

Python bytes 类型用来表示一个“字节串”
bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的

bytes 只负责以字节序列的形式(二进制形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。如果采用合适的字符编码方式(字符集),字节串可以恢复成字符串;反之亦然,字符串也可以转换成字节串

bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件

文件
a.write()
向文件写入一个字符串

a.writelines()
方法用于向文件中写入一序列的字符串,这一序列字符串可以是由迭代对象产生的,如一个字符串列表,换行需要制定换行符 \n

进制转换

十进制转化成二进制
使用python的内置方法bin()
dec=10
print bin(dec)

0b1010
python 中二进制以ob开头

十进制转化为八进制
dec=10
print oct(dec)

012

十进制转化16进制
dec=10
print hex(dec)

0xa

os库
提供操作系统的接口,常用的有文件系统相关和进程相关
1、os.listdir()
用于返回指定的文件夹包含的文件或文件夹的名字的列表
os.listdir(path)

参数
path – 需要列出的目录路径

如果目录名字为中文 需要转码处理
uPath = unicode(cPath,‘utf-8’)

2、os.path模块
os.path.abspath(path) 返回绝对路径
os.path.basename(path) 返回文件名
os.path.commonprefix(list) 返回list(多个路径)中,所有path共有的最长的路径
os.path.dirname(path) 返回文件路径
os.path.exists(path) 如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。
os.path.lexists 路径存在则返回True,路径损坏也返回True
os.path.expanduser(path) 把path中包含的""和"user"转换成用户目录
os.path.expandvars(path) 根据环境变量的值替换path中包含的" n a m e " 和 " name"和" name""{name}"
os.path.getatime(path) 返回最近访问时间(浮点型秒数)
os.path.getmtime(path) 返回最近文件修改时间
os.path.getctime(path) 返回文件 path 创建时间
os.path.getsize(path) 返回文件大小,如果文件不存在就返回错误
os.path.isabs(path) 判断是否为绝对路径
os.path.isfile(path) 判断路径是否为文件
os.path.isdir(path) 判断路径是否为目录
os.path.islink(path) 判断路径是否为链接
os.path.ismount(path) 判断路径是否为挂载点
os.path.join(path1[, path2[, …]]) 把目录和文件名合成一个路径
os.path.normcase(path) 转换path的大小写和斜杠
os.path.normpath(path) 规范path字符串形式
os.path.realpath(path) 返回path的真实路径
os.path.relpath(path[, start]) 从start开始计算相对路径
os.path.samefile(path1, path2) 判断目录或文件是否相同
os.path.sameopenfile(fp1, fp2) 判断fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2) 判断stat tuple stat1和stat2是否指向同一个文件
os.path.split(path) 把路径分割成 dirname 和 basename,返回一个元组
os.path.splitdrive(path) 一般用在 windows 下,返回驱动器名和路径组成的元组
os.path.splitext(path) 分割路径,返回路径名和文件扩展名的元组
os.path.splitunc(path) 把路径分割为加载点与文件
os.path.walk(path, visit, arg) 遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数
os.path.supports_unicode_filenames 设置是否支持unicode路径名

3、os.remove()
删除一个文件或文件夹
os.remove(path)

参数
path是文件的路径,如果这个路径是一个文件夹,则会抛出OSError的错误

4、os.system()
调用cmd命令

ping命令
ping -n 指定发送包数量

返回值
0为ping通
1未ping通

5、os.rename(Olddir, Newdir)
文件重命名

sys库
提供python解释器系统的通用配置和函数,影响着解释器的行为
1、sys.stdout.write()
sys.stdout.write()方法跟print()方法的区别是 前者打印不换行,后者换行

2、sys.stdout.flush()
立即刷新输出的内容

编码
web、文档中各类制式编码转换为中文

形似\u4e2d\u56fd\u6c5f\u82cf\u7701的转换为中文
a = ‘\u4e2d’
b = a.encode(‘utf-8’)
c = b.decode(‘utf-8’)

形似\xe4\xb8\xad\xe5\x9b\xbd的转换为中文
a = ‘\xe4’
b = a.decode(‘utf-8’)

“相当于 -> '或”

decode编码
str.decode(encoding=‘UTF-8’,errors=‘strict’)

参数
encoding – 要使用的编码,如"UTF-8"。
errors – 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。

UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xa1 in position 6: invalid start byte

将:
j = json.loads(line.decode(‘utf-8’))

改为:
j = json.loads(line.decode(‘ISO-8859-1’))

round() 函数
返回浮点数 x 的四舍五入值,准确的说保留值将保留到离上一位更近的一端(四舍六入),精度要求高的,不建议使用该函数。

print ("round(70.23456) : ", round(70.23456))

round(70.23456) : 70

print ("round(56.659,1) : ", round(56.659,1))

round(56.659,1) : 56.7

print ("round(80.264, 2) : ", round(80.264, 2))

round(80.264, 2) : 80.26

print ("round(100.000056, 3) : ", round(100.000056, 3))

round(100.000056, 3) : 100.0

print ("round(-100.000056, 3) : ", round(-100.000056, 3))

round(-100.000056, 3) : -100.0

random库
1、random.random()
返回随机生成的一个实数,它在[0,1)范围内

2、random.randint()
产生x到y的一个整数型随机数
random.randint(x,y)

3、random.sample()
实现从序列或集合seq中随机选取k个独立的的元素
random.sample(seq, k)

参数:
seq:元组、列表或字符串
k:选取元素个数

time库
1、time.time()
用于获取当前时间戳
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年

2、time.localtime()
获取当前年月日时分秒时间

3、time.asctime()
获取格式化的时间

4、time.strftime(format[, t])
格式化日期

格式化成2016-03-20 11:45:39形式

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

格式化成Sat Mar 28 22:24:24 2016形式

print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))

python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

5、time.sleep(secs)
推迟调用线程的运行,secs指秒数

不会耗内存,也不会给计算机的运行造成压力,sleep()函数会主动通知操作系统,自己进入休眠模式,在指定的时间内不用调度自己

6、time.perf_counter()
获取程序执行时间

start = time.perf_counter()

代码块

end = time.perf_counter()
print(‘Running time: %s Seconds’ % (end - start))

7、time.mktime()
将格式化时间转换为时间戳
t = ‘2021-09-13 21:45:42’
timeArray = time.strptime(t, ‘%Y-%m-%d %H:%M:%S’)
timeStamp = int(time.mktime(timeArray))
print(timeStamp)

1631540742

8、将时间戳转换为格式化时间
now = int(time.time())
timeArray = time.localtime(now)
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(time.time()))))

datetime库
1、datetime.datetime.strptime()
str类型的日期转换为时间戳
a = ‘2013-10-10 23:40:00’
b = datetime.datetime.strptime(a, “%Y-%m-%d %H:%M:%S”)

2、datetime.datetime.strftime()
时间戳转换为指定格式的日期
timeStamp = 1381419600
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y-%m-%d %H:%M:%S")

3、获取当前格式化时间
today = datetime.date.today()
print(today, today.year, today.month, today.day)

today = str(datetime.datetime.now().strftime(’%Y-%m-%d %H:%M:%S’))

4、获取当前时间戳
today = datetime.datetime.now().timestamp()

5、获取昨天日期
def get_yesterday():
now_time = datetime.datetime.now()
yesterday = (now_time + datetime.timedelta(days=-1)).strftime("%Y-%m-%d")
return yesterday

print(get_yesterday())

calendar库
1、calendar.month()
获取某月日历
calendar.month(2016, 1)

2、calendar.calendar()
返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数
calendar.calendar(year,w=2,l=1,c=6)

3、calendar.firstweekday( )
返回当前每周起始日期的设置。默认情况下,首次载入 calendar 模块时返回 0,即星期一

4、calendar.isleap()
是闰年返回 True,否则为 False
calendar.isleap(year)

import calendar
print(calendar.isleap(2000))
True

print(calendar.isleap(1900))
False

5、calendar.leapdays()
返回在Y1,Y2两年之间的闰年总数
calendar.leapdays(y1,y2)

6、calendar.month()
返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数
calendar.month(year,month,w=2,l=1)

7、calendar.monthcalendar()
返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始
calendar.monthcalendar(year,month)

8、calendar.monthrange()
返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12
calendar.monthrange(year,month)

9、calendar.prcal(year,w=2,l=1,c=6)
相当于 print calendar.calendar(year,w=2,l=1,c=6)

10、calendar.prmonth(year,month,w=2,l=1)
相当于 print calendar.month(year,month,w=2,l=1)

11、calendar.setfirstweekday()
设置每周的起始日期码。0(星期一)到6(星期日)
calendar.setfirstweekday(weekday)

12、calendar.timegm()
和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳(1970纪元后经过的浮点秒数)
calendar.timegm(tupletime)

13、calendar.weekday()
返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)
calendar.weekday(year,month,day)

运行python程序不显示cmd的方法
运行python程序的时候会在背景显示一个cmd
方法1:pythonw xxx.py
方法2:将.py改成.pyw (这个其实就是使用脚本解析程序pythonw.exe)

全局变量global
count = 0
def a():
global count
count += 1
for i in range(5):
a()
print(count)

5

断言assert
用于判断一个表达式,在表达式条件为false的时候触发异常。断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。

assert True
条件为true正常执行

assert False

Traceback (most recent call last):
File “C:/Users/把爱送到家/Desktop/py/test - 副本 - 副本.py”, line 1, in
assert False
AssertionError

urllib库

urllib是python内置的HTTP请求库,无需安装即可使用,它包含了4个模块:
request:它是最基本的http请求模块,用来模拟发送请求
error:异常处理模块,如果出现错误可以捕获这些异常
parse:一个工具模块,提供了许多URL处理方法,如:拆分、解析、合并等
robotparser:主要用来识别网站的robots.txt文件,然后判断哪些网站可以爬

urllib.request模块

1、urllib.request.urlopen()
urllib.request.urlopen(url,data=None,[timeout,],cafile=None,capath=None,cadefault=False,context=None)
请求站点获得一个HTTP对象,获取一个GET请求

url参数

a = urllib.request.urlopen(‘http://www.baidu.com’)
上述是通过请求百度的get请求获得百度,下面使用urllib的post请求

data参数

data = bytes(urllib.parse.urlencode({‘word’: ‘hello’}), encoding=‘utf8’)
这里就用到urllib.parse,通过bytes(urllib.parse.urlencode())可以将post数据进行转换放到urllib.request.urlopen的data参数中,这样就完成了一次post请求

所以如果我们添加data参数的时候就是以post请求方式请求,如果没有data参数就是get请求方式

timeout参数

在某些网络情况不好或者服务器端异常的情况会出现请求慢的情况,或者请求异常,所以这个时候我们需要给请求设置一个超时时间,而不是让程序一直在等待结果
urllib.request.urlopen(‘http://httpbin.org/get’, timeout=1)

2、a.read().decode()
读取并解析已urlopen的网址,返回网页源代码

参数
decode(‘UTF-8’)
默认为utf-8编码

3、a.status()
返回网页响应状态码,如404,200,504

4、a.getheaders()
返回网页响应头信息,与6一样

5、urllib.request.Requset()
urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)
请求访问回传网站表单信息

参数
url:请求的URL,必须传递的参数,其他都是可选参数
data:上传的数据,必须传bytes字节流类型的数据,如果它是字典,可以先用urllib.parse模块里的urlencode()编码
headers:它是一个字典,传递的是请求头数据,可以通过它构造请求头,也可以通过调用请求实例的方法add_header()来添加
origin_req_host:指请求方的host名称或者IP地址
unverifiable:表示这个请求是否是无法验证的,默认为False,如我们请求一张图片如果没有权限获取图片那它的值就是true
method:是一个字符串,用来指示请求使用的方法,如:GET,POST,PUT等

6、a.info()
返回网页的响应头信息,与4一样

7、rulllib.request.ProxyHandler()
很多网站都会检测某一段时间某个IP的访问次数,如果同一个IP访问过于频繁,那么该网站就会禁止来自该IP的访问,针对这种情况,可以使用代理服务器,每隔一段时间换一个马甲
urllib.request.ProxyHandler({“http”: “211.141.111.114:61395”})

8、urllib.request.HTTPCookieProcessor()
cookie中保存中我们常见的登录信息,有时候爬取网站需要携带cookie信息访问,这里用到了http.cookijar,用于获取cookie以及存储cookie
同时cookie可以写入到文件中保存,有两种方式http.cookiejar.MozillaCookieJar和http.cookiejar.LWPCookieJar()

urllib.parse模块

1、urllib.parse.urlparse()
urllib.parse.urlparse(urlstring,scheme=’’,allow_fragments=True)

参数
urlstring:待解析的URL,字符串
scheme:它是默认的协议,如http或者https,URL如果不带http协议,可以通过scheme来指定,如果URL中制定了http协议则URL中生效
allow_fragments:是否忽略fragment即锚点,如果设置为False,fragment部分会被忽略,反之不忽略

2、urllib.parse.urlunparse()
与urlparse()相反,通过列表或者元祖的形式接受一个可迭代的对象,实现URL构造

3、urllib.parse.urlsplit()
与urlparse()方法类似,它会返回5个部分,把params合并到path中

4、urllib.parse.urlunsplit()
与urlunparse()类似,它也是将链接的各部分组合完整的链接的方法,传入的参数也是可迭代的对象,如列表元祖等,唯一的区别是长度必须是5个,它省略了params

5、urllib.parse.urljoin()
通过将基本URL(base)与另一个URL(url)组合起来构建完整URL,它会使用基本URL组件,协议(schemm)、域名(netloc)、路径(path)、来提供给URL中缺失的部分进行补充,最后返回结果
base_url提供了三项内容scheme,netloc,path,如果这3项在新的链接中不存在就给予补充,如果新的链接存在就使用新的链接部分,而base_url中的params,query和fragment是不起作用的。通过urljoin()方法可以实现链接的解析、拼接和生成

6、urllib.parse.urlencode()
urlencode()在构造GET请求参数时很有用,它可以将字典转化为GET请求参数

7、urllib.parse.parse_qs()
parse_qs()与urlencode()正好相反,它是用来反序列化的,如将GET参数转换回字典格式

8、urllib.parse.parse_qsl()
它将参数转换为元祖组成的列表

9、urllib.parse.quote()
把url中的中文转码成url形式
该方法可以将内容转换为URL编码的格式,如参数中带有中文时,有时会导致乱码的问题,此时用这个方法将中文字符转化为URL编码

10、urllib.parse.unquote()
与urllib.parse.quote()相反,他用来进行URL解码

urllib.Robots模块
利用urllib的robotparser模块,我们可以实现网站Robots协议的分析

1、Robots协议
Robots协议也称为爬虫协议、机器人协议,它的全名叫做网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎哪些网页可以抓取,哪些不可以抓取,它通常是一个robots.txt的文本文件,一般放在网站的根目录下。
当搜索爬虫访问一个站点时,它首先会检查这个站点根目录下是否存在robots.txt文件,如果存在,搜索爬虫会根据其中定义的爬去范围来爬取,如果没有找到,搜索爬虫会访问所有可直接访问的页面

我们来看下robots.txt的样例:
User-agent: *
Disallow: /
Allow: /public/

它实现了对所有搜索爬虫只允许爬取public目录的功能,将上述内容保存为robots.txt文件放在网站根目录下,和网站的入口文件(index.html)放在一起
User-agent描述了搜索爬虫的名称,将其设置为*则代表协议对任何爬虫有效,如设置为Baiduspider则代表规则对百度爬虫有效,如果有多条则对多个爬虫受到限制,但至少需要指定一条
一些常见的搜索爬虫名称:
BaiduSpider  百度爬虫 www.baidu.com
Googlebot  Google爬虫 www.google.com
360Spider  360爬虫 www.so.com
YodaoBot  有道爬虫 www.youdao.com
ia_archiver  Alexa爬虫 www.alexa.cn
Scooter  altavista爬虫 www.altavista.com
Disallow指定了不允许抓取的目录,如上例中设置的/则代表不允许抓取所有的页面
Allow一般和Disallow一起使用,用来排除单独的某些限制,如上例中设置为/public/则表示所有页面不允许抓取,但可以抓取public目录
设置示例:
#禁止所有爬虫
User-agent: *
Disallow: /

#允许所有爬虫访问任何目录,另外把文件留空也可以
User-agent: *
Disallow:

#禁止所有爬虫访问某那些目录
User-agent: *
Disallow: /home/
Disallow: /tmp/

#只允许某一个爬虫访问
User-agent: BaiduSpider
Disallow:
User-agent: *
Disallow: /

2、robotparser模块
rebotparser模块用来解析robots.txt,该模块提供了一个类RobotFileParser,它可以根据某网站的robots.txt文件来判断一个抓取爬虫时都有权限来抓取这个网页
urllib.robotparser.RobotFileParser(url=’’)

robotparser类常用的方法:
set_url():用来设置robots.txt文件的连接,如果在创建RobotFileParser对象是传入了连接,就不需要在使用这个方法设置了
read():读取reobts.txt文件并进行分析,它不会返回任何内容,但执行那个了读取和分析操作
parse():用来解析robots.txt文件,传入的参数是robots.txt某些行的内容,并安装语法规则来分析内容
can_fetch():该方法传入两个参数,第一个是User-agent,第二个是要抓取的URL,返回的内容是该搜索引擎是否可以抓取这个url,结果为True或False
mtime():返回上次抓取和分析robots.txt的时间
modified():将当前时间设置为上次抓取和分析robots.txt的时间

正则表达式

1、search()方法
re.search(r’abc’,‘123abc456’)
<re.Match object; span=(3, 6), match=‘abc’>
在字符串中找到该组字符

re.search(r’.’,‘123’)
<re.Match object; span=(0, 1), match=‘1’>
在字符串中找到第一个字符返回

re.search(r’\d’,‘abc123’)
<re.Match object; span=(3, 4), match=‘1’>
在字符串中找到数字

创建字符类,匹配字符类中任何一个字符都算匹配
re.search(r’[abc],‘123abc’)
<re.Match object; span=(3, 4), match=‘a’>

re.search(r’[a-z]’,‘123abc’)
<re.Match object; span=(3, 4), match=‘a’>
创建a-z所有字母字符串

re.search(r’a{3}bc’,‘123aaabc’)
<re.Match object; span=(3, 8), match=‘aaabc’>
大括号表示前面的字符要重复匹配多少次

re.search(r’a{3,5}bc’,‘123aaaabc’)
<re.Match object; span=(3, 9), match=‘aaaabc’>
大括号表示前面的字符要重复匹配多少次,并给定范围

正则表达式基本语法
两个特殊的符号’^‘和’ ′ 。 他 们 的 作 用 是 分 别 指 出 一 个 字 符 串 的 开 始 和 结 束 。 例 子 如 下 : " A b c " : 表 示 所 有 以 " A b c " 开 始 的 字 符 串 " A b c '。他们的作用是分别指出一个字符串的开始和结束。例子如下: "^Abc":表示所有以"Abc"开始的字符串 "Abc "Abc""Abc""Abc":表示所以以"Abc"结尾的字符串
“^Abc " : 表 示 开 始 和 结 尾

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值