网络爬虫学习笔记(2)
1 资料
- 《Python网络爬虫从入门到实践》唐松,陈志铨。主要面向windows平台下的python3。
- 菜鸟教程-》python
2 笔记
2-1 Python基础(1)++
- python的列表还有一种只读格式——元组Tuple,它用()进行赋值,且只能在初始化时赋值。
- 列表有追加元素的内置方法append()
- 字典有内置方法keys()(获得所有键的值),values()
- 元组用 “( )” 标识, 列表用 “[ ]” 标识,字典用 “{ }” 标识
- type(变量) 查看该变量的数据类型,还可以用 isinstance(变量,类型) 来判断是不是那种类型。type()不会认为子类是一种父类类型,isinstance()会认为子类是一种父类类型。
2-2 Python基础(2)
- 条件语句——格式上是if 条件 :,取代Java中()的是一个在最后的:同样有else存在(但是else后面要加:),另外还有else if简写而成的elif。
a
=
'book'
b
=
'java'
c
=
"book"
if
a
==
b
:
print
(
a
)
else
:
print
(
'a!=b'
)
if
a
==
c
:
print
(
a
)
elif
b
==
c
:
print
(
'b==c'
)
else
:
print
(
'c!=a/b'
)
- 循环语句——常用的有for循环和while循环两种,同样是()变成末尾的:。不过python的for循环形式上更接近foreach循环,python中的循环还可以使用else。
myBook
=
[
'java'
,
'python'
,
'c'
]
for
book
in
myBook
:
print
(
book
)
print
(
'\n'
)
for
i
,
j
in
enumerate
(
(
'a'
,
'b'
,
'c'
)
)
:
print
(
i
,
j
)
for
i
,
j
in
enumerate
(
myBook
)
:
print
(
i
,
j
)
count
=
0
while
count
<
3
:
print
(
myBook
[
count
]
)
count
=
count
+
1
for循环中利用内置函数 len() 和 range(),函数 len() 返回列表的长度,即元素的个数, range返回一个序列的数。(例子来自菜鸟)(菜鸟你的括号呢?)
fruits
=
[
'banana'
,
'apple'
,
'mango'
]
for
index
in
range
(
len
(
fruits
)
)
:
print
(
'当前水果 :'
,
fruits
[
index
]
)
else使用例子(例子来自菜鸟)
for
num
in
range
(
10
,
20
)
:
# 迭代 10 到 20 之间的数字
for
i
in
range
(
2
,
num
)
:
# 根据因子迭代
if
num
%
i
==
0
:
# 确定第一个因子
j
=
num
/
i
# 计算第二个因子
print
(
'%d 等于 %d * %d'
%
(
num
,
i
,
j
)
)
break
# 跳出当前循环
else
:
# 循环的 else 部分,不break跳出循环的话就会执行
print
(
num
,
'是一个质数'
)
此外循环中可以用continue、break、pass(什么也不做)。
3. 函数——参数(()里的内容)必须要正确地写入函数中
def
add
(
x
)
:
y
=
x
+
1
return
y
w
=
1
print
(
w
)
print
(
add
(
w
)
)
- 运算符,这里只提一下python中有**——幂 - 返回x的y次幂,//——取整除 - 返回商的整数部分(向下取整)并且没有++、–(- -,间隙被间隙掉了!)。另外与或非分别写成and、or、not。python还有成员运算符in、not in;身份运算符is,not is(用于比较两个对象的存储单元)
-
- 类
class
Person
:
#这是一个类变量,它的值将在这个类的所有实例之间共享
n
=
0
#__init__构造方法,注意前后均有两个_
#self 代表类的实例,self 在定义类的方法时是必须有的
#,虽然在调用时不必传入相应的参数。
def
__init__
(
self
,
name
,
age
)
:
self
.
name
=
name
self
.
age
=
age
def
detail
(
self
)
:
#通过这个函数来调用被封装的内容
print
(
self
.
name
)
print
(
self
.
age
)
obj1
=
Person
(
'sss'
,
16
)
#对象声明
obj1
.
detail
(
)
obj1
.
name
obj1
.
n
继承格式
class
子类名
(
父类名
)
:
构造方法重写时用super关键字来使用父类构造方法
class
Father
(
object
)
:
def
__init__
(
self
,
name
)
:
class
Son
(
Father
)
:
def
__init__
(
self
,
name
)
:
super
(
Son
,
self
)
.
__init__
(
name
)
-
-
基础重载方法
下表列出了一些通用的功能,可以在自己的类重写:
-
基础重载方法
__init__
(
self
[
,
args
.
.
.
]
)
构造函数
简单的调用方法
:
obj
=
className
(
args
)
__del__
(
self
)
析构方法
,
删除一个对象
简单的调用方法
:
del
obj
__repr__
(
self
)
转化为供解释器读取的形式
简单的调用方法
:
repr
(
obj
)
__str__
(
self
)
用于将值转化为适于人阅读的形式
简单的调用方法
:
str
(
obj
)
__cmp__
(
self
,
x
)
对象比较
简单的调用方法
:
cmp
(
obj
,
x
)
- 模块Module——是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。使用 import 语句来引入模块。
# 导入模块
import
support
# 现在可以调用模块里包含的函数了
support
.
print_func
(
"Runoob"
)