用python获取数据:
抓取:
Requests库
解析:
BeautifulSoup:一个可以从HTML或XML文件中提取数据的Python库。
官网:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
生成BeautifulSoup的对象soup后,可使用soup.tag得到标签内容
tag中最重要的属性:name、attributes
获取tag名字的方法:
获取tag属性的方法:
获取tag中非属性的字符串:
寻找所有的某个标签的内容:
find_all方法+属性:
寻找第一个标签的内容:
补充: 推荐博客https://www.cnblogs.com/hanmk/p/8724162.html
上课的示例代码:
发现老师上课用的代码运行不出结果,原来是打印string时不能跨越多个标签,只能从最里层的标签开始打印,目前我也不知道为什么。
Regex:进行各类正则表达式处理
参考网站:
https://docs.python.org/3.5/library/re.html
python中的序列:
包括 字符串、列表、元组
序列元素的访问:
序列的操作类型:
标准类型运算符:
序列类型运算符:
类型转换内建函数:
list():将一个字符串转化为列表
tuple():将一个字符串转化为元组
str():将一个列表或者元组转化为字符串
序列类型可用内建函数:
python中的字符串:
三引号可以使字符串保持原貌:
r可以简化文件路径:
双引号使得单引号使用方便:
字符串与输出形式:
类型说明符:
字符串(s)默认的对齐方式为左对齐,整数的默认方式为右对齐
python中的转义字符:
python中的列表:
列表是可变数据类型,字符串是不可变数据类型
可以更改列表中的元素:
列表中可以包含不同类型的对象:
在列表中加入元素:
在列表中减去元素:
sort函数和sorted函数的区别:
>>> a=[1,3,5,2,9,4,7,8,6,0] >>> a.sort() >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=[1,3,5,2,9,4,7,8,6,0] >>> sorted(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a [1, 3, 5, 2, 9, 4, 7, 8, 6, 0]
sort函数的进一步用法:
>>> List=[3,4,5,2,1] >>> List.sort(reverse=True) >>> List [5, 4, 3, 2, 1] >>> strList=['abab','aa','b','ccccccc'] >>> strList.sort(key=len) >>> strList ['b', 'aa', 'abab', 'ccccccc']
reverse函数和reversed函数的区别:
>>> List1=[1,3,5,7,9] >>> List1.reverse() >>> List1 [9, 7, 5, 3, 1]
>>> List2=[2,4,6,8,10] >>> List3=reversed(List2) >>> List2 [2, 4, 6, 8, 10] >>> List3 <list_reverseiterator object at 0x00315F30>
reversed函数返回的是一个reverse 的迭代器
列表解析:
生成器表达式:
python中的元组:
元组是不可变数据类型,其一般使用与列表类似。
创造具有一个元素的元组:
元组和列表的区别:
由于元组不可变,故对于那些会改变元组本身的方法不能使用,如sort()函数,对于列表可用;对于元组,使用时会报错。sorted()函数没有真正改变元组的内容,故可以使用
元组的作用:
1.在映射类型中当作键使用
2.函数的特殊类型参数
3.作为函数
元组作为函数的特殊类型参数:可变长位置参数
>>> def foo(arg1,*arg2): print(arg1) print(arg2) >>> foo("hello","good","morning","!") hello ('good', 'morning', '!')
元组作为函数的特殊返回类型:
>>>def foo(): return 1,2,3 >>>foo() (1,2,3)
python中的字典:
key(不可变数据类型)->value
创建字典:
1.直接创建
2.利用dict函数
将所有的key设置一个默认值:
将两个列表的元素组成字典:
从列表中构造字典:
如:
字典的使用:增删(del)改查(in/直接用键值查找)
dict2 = dict1 ->将dict2和dict1关联对应到同一个字典,执行例如dict1['score'] = 99的操作后,dict2中的内容也会受影响
字典的内建函数:dict(),len(),hash()
hash() ->判断某个对象是不是可哈希的->是不是不可变的
若一个对象是可哈希的(不可变的),则会出现哈希值;否则,会出现异常
单独输出字典的key or value:
更新 新旧的两个字典:
查找字典较为明智的方法:
清空字典:clear()
搜索引擎关键词查询中字典的使用:
字典充当可变长关键字参数;元组充当可变长位置参数
python中的集合:
集合的比较:
补充:
集合中的内建函数:
1.面向所有集合:
union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)
2.面向可变类型的集合:
其中,add和update的区别如下:
python中的扩展库 SciPy:
SciPy中的数据结构:
-ndarray(N维数组)
-Series(变长字典)
-DataFrame(数据框)
SciPy中的NumPy:
创建数组:
代数运算计算行列式:
python中的数组:
用ndarray表示的数组:
ndarray的属性:
如一个二维数组:
ndarray的创建:
ndarray的操作:
ndarray的运算:
注意:这里的矩阵乘法和线代中的矩阵乘法不一样
var->方差;std->标准差
ndarray在线代中的应用:
nadarray的ufunc函数:
python中的变长字典Series:
SciPy中的Matplotlib:
SciPy中的pandas:
Series中的键值是相互独立的(与字典的区别)
Series是一个有序定长的字典,类似一堆数组的对象,由数据和索引组成,对应一维序列
Series的创建:
自定义的创建方式:
Series的基本运算:
exp(N)->计算自然对数的N次方
Series的数据对齐:
用Series自动对齐不同索引的数据:
Series的name属性:
DataFrame:
对应二维表结构,表格型的数据结构->相当于共享同一个index的Series的集合:
创建一个DataFrame:
1.
2.
DataFrame的基本操作:
iloc->某个区域
DataFrame对象的修改和删除:
DataFrame的统计功能: