更多课程 选择中心


Python培训

400-996-5531

学习python爬虫需要具备的基本功


一、python变量和数据类型

创建变量意味着在内存中开辟一个空间,变量拥有不同的数据类型。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

python五个标准的数据类型:

Numbers(支持int、long、float、complex四种数字类型)

String(从左到右索引默认0开始)

List(用[ ]标识)

Tuple(用( )标识,内部元素用逗号隔开)

Dictionary(用"{ }"标识,由索引(key)和它对应的值value组成)

1、Numbers:

Python 支持四种不同的数值类型:

整型- 通常被称为是整型或整数,是正或负整数,不带小数点。

长整型 - 无限大小的整数,整数最后是一个大写或小写的L。

浮点型- 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)

复数 - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

2、String:

我们可以使用引号('或")来创建字符串,例如:

var1="hello world"

var2="hello beijing"

访问字符串中的值:

print("var1[0]:",var1[0])

print("var2[0:5]:",var2[0:5])

显示结果如下:

3、List:

列表中的每个元素都分配一个数字 。它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['physics', 'chemistry', 1997, 2000];

list2 = [1, 2, 3, 4, 5 ];

list3 = ["a", "b", "c", "d"];

访问列表中的值:

print("list1[0]: ", list1[0])

print("list2[1:5]: ", list2[1:5])

显示结果如下:

4、Tuple:

元祖的创建,只要在括号中添加元素,并使用逗号隔开即可,如下示例:

tup1 = ('physics', 'chemistry', 1997, 2000)

tup2 = (1, 2, 3, 4, 5 )

tup3 = "a", "b", "c", "d"

访问元组中的值:

print("tup1[0]: ", tup1[0])

print("tup2[1:5]: ", tup2[1:5])

显示结果如下:

5、Dictionary:

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

访问字典里的值:

print("dict['Name']: ", dict['Name'])

print("dict['Age']: ", dict['Age'])

显示结果如下:

字典内置函数&方法:

(1)keys()方法:

dict = {'Name': 'Zara', 'Age': 7}

print(dict.keys())

显示结果如下:

(2)values()方法:

dict = {'Name': 'Zara', 'Age': 7}

print(dict.values())

显示结果如下:

(3)items()方法:

dict = {'Google': 'www.google.com', 'Runoob': '#', 'taobao': '#'}

print(dict.items())

# 遍历字典列表

for key, values in dict.items():

print(key, values)

显示结果如下:

二、python函数

1、自定义函数:

定义函数用def语句,依次写出函数名、括号、括号中的参数和冒号,然后在缩进块中编写函数体,函数的返回值用return语句:

def my_abs(x):

if x>=0:

return x

else:

return -x

print(my_abs(5))

print(my_abs(-88))

显示结果如下:

2、函数的参数:(1)位置参数:如下所示,power(x,n),x和n就是位置参数,调用函数时,传入的两个值按照位置顺序依次赋值给参数x和n:

def power(x,n):

s=1

while n>0:

n=n-1

s=s*x

return s

print(power(5,3))

显示结果如下:

(2)默认参数:如下所示,可以把第二个参数n的默认值设定为2,这样,当调用power(5)时,相当于调用power(5,2)

def power(x,n=2):

s=1

while n>0:

n=n-1

s=s*x

return s

print(power(6))

显示结果如下:

(3)可变参数:我们以数学题为例,给定一组数字a,b,c...,请计算a^2+b^2+c^2+...

def calc(numbers):

sum=0

for n in numbers:

sum=sum+n*n

return sum

print(calc([1,2,3]))

print(calc((1,3,4,6,7)))

显示结果如下:

定义一个可变参数,只要在前面加上一个*号即可:

def calc(*numbers):

sum=0

for n in numbers:

sum=sum+n*n

return sum

print(calc(1,2,3))

print(calc(1,3,4,6,7))

显示结果同上。

(4)关键字参数:关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict:

def person(name,age,**kw):

print('name:',name,'age:',age,'other:',kw)

person('Michael', 30)

person('Bob', 35, city='Beijing')

person('Adam', 45, gender='M', job='Engineer')

显示结果如下:

(5)参数组合:参数可以组合使用,但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。比如定义一个函数,包含上述若干种参数:

def f1(a, b, c=0, *args, **kw):

print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

def f2(a, b, c=0, *, d, **kw):

print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

f1(1, 2)

f1(1, 2, c=3)

f1(1, 2, 3, 'a', 'b')

f1(1, 2, 3, 'a', 'b', x=99)

f2(1, 2, d=99, ext=None)

显示结果如下:

所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

要注意定义可变参数和关键字参数的语法:

*args是可变参数,args接收的是一个tuple; **kw是关键字参数,kw接收的是一个dict。

三、网页解析

1、正则表达式:

扛把子技术,总得会最基础的:

拓展阅读:

(1)正则表达式 - 教程 | 菜鸟教程

(2)正则表达式(RegEx)--快速参考

(3)正则表达式在线测试

2、XPATH:

高效的分析语言,表达清晰简单,参考:XPath 教程

3、Beautifulsoup:

一款神器,配合request、urllib等模块,可以编写各种小巧精干的爬虫脚本。

官网文档:Beautiful Soup 4.2.0 文档

四、爬虫进阶

1、常用模块:

urllib urllib2 requests

2、好用的框架:

scrapy

3、动态页面的爬取:

selenium+scrapy

4、遇到反爬虫策略怎么办:

opencv

打码平台

5、数据库:

mysql

sqllite

mongodb

6、数据分析

numpy

pandas(基于numpy的数据分析模块)

7、进阶技术:

多线程、多进程、分布式

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:达内python培训:Python其实是强类型
下一篇:Python IDE不二之选:Pycharm

2021年Python全套免费视频教程在哪里?

Python编程学习路线

Python最高有几级?

人工智能与语音遥控的区别?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省