【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。
在如今这个数据驱动的时代,数据就如同宝贵的资源,而 Python 爬虫则是获取这些资源的有力工具。无论是从网页中提取新闻资讯、从电商平台获取商品信息,还是从社交媒体收集用户评论,Python 爬虫都能大显身手。
然而,要想熟练掌握 Python 爬虫技术,扎实的 Python 基础是必不可少的。这就好比建造高楼大厦,Python 基础就是那稳固的基石。只有打好了这个基础,我们才能在爬虫的学习道路上稳步前行,理解并运用各种爬虫技术和框架。接下来,就让我们一起回顾那些重要的 Python 基础知识吧。
在 Python 中,变量就像是一个标签,我们可以把数据贴在这个标签上,方便后续使用。变量的命名需要遵循一定的规则:
变量的赋值使用等号=,比如age = 20,这就把整数 20 赋值给了变量age,之后我们使用age时,就相当于使用 20 这个值。Python 是动态类型语言,变量不需要预先声明类型,它会根据赋值自动确定类型。我们还可以在一行内给多个变量赋值,如x = y = z = 0,这样x、y、z都被赋值为 0;也可以同时给多个不同变量赋不同的值,a, b, c = 1, 2, “hello”,此时a为 1,b为 2,c为"hello"。
a = 10
b = 3
print(a + b) # 输出13
print(a - b) # 输出7
print(a * b) # 输出30
print(a / b) # 输出3.3333333333333335
print(a % b) # 输出1
print(a ** b) # 输出1000
print(a // b) # 输出3
x = 5
y = 8
print(x == y) # 输出False
print(x!= y) # 输出True
print(x > y) # 输出False
print(x < y) # 输出True
print(x >= y) # 输出False
print(x <= y) # 输出True
condition1 = True
condition2 = False
print(condition1 and condition2) # 输出False
print(condition1 or condition2) # 输出True
print(not condition1) # 输出False
a = 5 # 二进制为0101
b = 3 # 二进制为0011
print(a & b) # 输出1,二进制为0001
print(a | b) # 输出7,二进制为0111
print(a ^ b) # 输出6,二进制为0110
print(~a) # 输出-6,二进制为11111010(补码形式)
print(a << 1) # 输出10,二进制为1010
print(a >> 1) # 输出2,二进制为0010
x = 10
x += 5 # 相当于x = x + 5,此时x的值为15
x -= 3 # 相当于x = x - 3,此时x的值为12
x *= 2 # 相当于x = x * 2,此时x的值为24
x /= 4 # 相当于x = x / 4,此时x的值为6.0
流程控制语句是编程语言的重要组成部分,它允许我们根据不同的条件执行不同的代码块,或者重复执行一段代码。在 Python 中,主要的流程控制语句有if-else语句、for循环和while循环。
if-else语句用于根据条件来决定执行哪部分代码,它有三种常见的形式:单分支、双分支和多分支。
if 条件表达式:
语句块
num = 15
if num > 10:
print(f"{num} 大于10")
if 条件表达式:
语句块1
else:
语句块2
num = 8
if num % 2 == 0:
print(f"{num} 是偶数")
else:
print(f"{num} 是奇数")
if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
...
else:
语句块n
score = 75
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("中等")
elif score >= 60:
print("及格")
else:
print("不及格")
for循环用于遍历可迭代对象(如列表、元组、字符串等)中的每个元素,并对每个元素执行相同的操作。
for 变量 in 可迭代对象:
语句块
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
for i in range(5):
print(i)
for i in range(2, 11, 2):
print(i)
for num in range(1, 10):
if num == 5:
break
print(num)
for num in range(1, 10):
if num % 2 == 0:
continue
print(num)
while循环会在条件表达式为True时,重复执行语句块。
while 条件表达式:
语句块
sum_num = 0
i = 1
while i <= 10:
sum_num += i
i += 1
print(f"1到10的累加和为: {sum_num}")
i = 1
while True:
if i == 5:
break
print(i)
i += 1
i = 0
while i < 10:
i += 1
if i % 2 == 0:
continue
print(i)
在 Python 中,函数是组织好的、可重复使用的代码块,用于实现特定的功能。它可以提高代码的复用性和可维护性,让我们的编程工作更加高效。
函数定义使用def关键字,其基本语法如下:
def 函数名(参数列表):
"""函数文档字符串,用于描述函数的功能和使用方法"""
函数体
return 返回值
例如,定义一个简单的函数,用于计算两个数的和:
def add_numbers(a, b):
"""
该函数用于计算两个数的和
:param a: 第一个数
:param b: 第二个数
:return: 两个数的和
"""
result = a + b
return result
在这个例子中,add_numbers是函数名,a和b是参数,函数体计算了a和b的和并将结果通过return返回。
函数定义好后,就可以通过函数调用来执行其中的代码。调用函数时,使用函数名加上括号,括号内传入实际的参数值(如果有参数的话)。
例如,调用上面定义的add_numbers函数:
sum_result = add_numbers(3, 5)
print(sum_result) # 输出8
在这个例子中,add_numbers(3, 5)就是函数调用,3和5是实际传入的参数值,函数执行后返回的结果赋值给了sum_result变量,然后打印出结果。
函数调用时,参数的传递方式有两种:
def greet(name, greeting = "Hello"):
"""
该函数用于向某人打招呼
:param name: 姓名
:param greeting: 问候语,默认为"Hello"
:return: 打招呼的字符串
"""
message = f"{greeting}, {name}!"
return message
调用这个函数时,可以只传入name参数:
print(greet("Alice")) # 输出Hello, Alice!
也可以传入greeting参数来覆盖默认值:
print(greet("Bob", "Hi")) # 输出Hi, Bob!
def print_numbers(*args):
for num in args:
print(num)
print_numbers(1, 2, 3, 4)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=25, city="New York")
def my_function():
local_var = 10 # 局部变量
print(local_var)
my_function()
# print(local_var) # 这行会报错,因为local_var在函数外不可见
global_var = 20 # 全局变量
def my_function():
print(global_var)
my_function()
print(global_var)
在函数内部修改全局变量时,需要使用global关键字声明,否则 Python 会认为是在创建一个新的局部变量。例如:
global_var = 30
def modify_global():
global global_var
global_var = 40
print(global_var)
modify_global()
print(global_var)
如果不使用global关键字,像下面这样:
global_var = 50
def modify_global():
global_var = 60 # 创建了一个新的局部变量,而不是修改全局变量
print(global_var)
modify_global()
print(global_var) # 输出50,因为全局变量没有被修改
通过以上对 Python 基础语法的回顾,我们复习了变量、数据类型、运算符、流程控制语句以及函数的定义与使用等重要知识点。这些基础内容是我们学习 Python 爬虫的基石,只有熟练掌握它们,才能更好地理解和运用后续的爬虫技术。
在后续的爬虫学习中,我们会频繁地使用这些基础知识。比如在处理网页数据时,可能会用到字符串操作来提取有用信息,使用列表和字典来存储数据;在编写爬虫逻辑时,会运用流程控制语句来判断网页状态、决定爬取策略,使用函数来封装一些重复的操作,提高代码的复用性。
所以,建议大家在学习爬虫之前,一定要花时间巩固这些 Python 基础知识。可以通过做练习题、阅读优秀的 Python 代码示例等方式来加深理解和记忆。只有基础扎实了,我们在爬虫的学习道路上才能走得更远、更稳。