模块(1-15)
目录
1、列举常用的模块
基础:
os,sys,time,datetime,json,pickle,randon,hashlib,re,math,logging
爬虫:
requests,BeautifulSoup,xpath,gevent,asyncio,twisted
数据分析:
pandas,numpy,scipy,matplotlib,seaborn
等。。。
2、如何安装第三方模块?
pip3 install 模块名称
3、re的match和search区别?
match:匹配开头
search:匹配从上至下查找
import re
s1 = 'abcabcabc'
print(re.match('abc', s1).group()) # abc
print(re.match('abc', s1).span()) # (0, 2)
print(re.search('bca', s1).group()) # bca
print(re.search('bca', s1).span()) # (1, 4)
4、什么是正则的贪婪匹配?
贪婪匹配:
默认都是贪婪匹配。贪婪匹配都是取大,比如: *表示零次更多次、+表示一次或多次、?表示零次或一次
默认贪婪匹配时:*表示多次、+表示多次、?表示一次
取消贪婪匹配:
量词后面加问号(?)。 eg: 待匹配:李杰和李莲英和李二棍子 正则表达式:李.+? 结果:李杰 李莲 李二 ,因为+后面跟了?,所以+表示一次
res3 = re.findall('李.?','李杰和李莲英和李二棍子')
print(res3)
# 结果:['李杰', '李莲', '李二']
转义符:
\ : 取消转义
eg: \\n 表示\n
5、生成一个随机数?
用random随机模块
import random
print(random.randint(0, 9)) # 随机取一个0-9的数字,包含头尾
print(random.random) # 取0-1之间的小数
print(random.choice([1, 2, 3, 4])) # 随机从列表中取一个值
print(random.uniform(1,10))#1-10小数,如1.927109612082716
random.randrange(1,10,2) # 大于等于1且小于10之间的奇数
6、如何使用python删除一个文件?
用os模块
import os
os.remove('文件名')
7、logging模块的作用?以及应用场景?
在我们平时编写的程序,基本上都会有记录日志的需求,并且日志当中包含的内容既有正常的程序访问,又有错误,警告等信息输出,在python的logging模块当中就提供了标准的日志接口,可以通过它来存储各种格式的日志.
logging模块也分为五个等级:
debug(),
info(),
warning(),
error(),
critical()
其中默认级别为warning,默认打印到终端
"""
开发应用程序或部署开发环境时,可以使用DEBUG或INFO级别的日志获取尽可能详细的日志信息来进行开发或部署调试;应用上线或部署生产环境时,应该使用WARNING或ERROR或CRITICAL级别的日志来降低机器的I/O压力和提高获取错误日志信息的效率。
"""
8、json序列化时,可以处理的数据类型有哪些?自定义JSON
可以处理的数据类型是 string、int、list、tuple、dict、bool、null
# 自定义时间序列化转换器
import json
from json import JSONEncoder
from datetime import datetime
class ComplexEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
else:
return super(ComplexEncoder,self).default(obj)
d = { 'name':'alex','data':datetime.now()}
print(json.dumps(d,cls=ComplexEncoder))
9、json序列化时,保留中文不转码,用什么参数?
# ensure_ascii=False 中文不转码
import json
a=json.dumps({"ddf":"你好"},ensure_ascii=False)
print(a) #{"ddf": "你好"}
10、查看目录下的的所有文件?
import os
print(os.listdir(path))
11、如何判断一个邮箱合法re正则?
import re
if re.match(r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$', email):
print('right')
else:
print('wrong')
12、python开发网络应用的框架
1. Django
2. Flask
3. web2py
4. Tornado
5. Twisted
6. TurboGears
13、写爬虫的时候用到了那些模块,作用是什么?
requests:请求库
BeautifulSoup:解析库
selenium:自动化测试工具
pyquery:网页解析库
pymysql:存储库。操作mysql数据库的
pymongo:操作mongodb数据库的
urllib.request 请求模块 模拟浏览器
urllib.error 异常处理模块
urllib.parse url解析模块 工具模块,如:拆分、合并
urllib.robotparser robots.txt 解析模块
14、列举python中比较熟知的框架
1.Scrapy
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。
2.PySpider
pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。
3.Crawley
Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。
4.Portia
Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。
5.Newspaper
Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。
6.Cola
Cola是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。
7.Grab
Grab是一个用于构建Web刮板的Python框架。借助Grab,您可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容,例如与HTML文档的DOM树进行交互。
15、输入某年某月,判断这是这一年的第几天?
import datetime
y = int(input('请输入4位数字的年份:')) # 获取年份
m = int(input('请输入月份:')) # 获取月份
d = int(input('请输入是哪一天:')) # 获取“日”
targetDay = datetime.date(y, m, d) # 将输入的日期格式化成标准的日期
dayCount = targetDay - datetime.date(targetDay.year - 1, 12, 31) # 减去上一年最后一天
print('%s是%s年的第%s天。' % (targetDay, y, dayCount.days))
选择了IT,必定终身学习