Python是一种高级、解释型、通用的编程语言,以其简洁易读的语法和强大的功能而广受欢迎。它支持多种编程范式(如面向对象、函数式编程),并拥有丰富的标准库和第三方模块。Python的动态类型和自动内存管理使其适合快速开发,广泛应用于Web开发、数据分析、人工智能、网络安全等领域。

变量与数据类型

  • 变量无需声明类型,直接赋值即可:
    x = 10          # 整数
    y = 3.14        # 浮点数
    name = "Alice"  # 字符串
    is_valid = True # 布尔值

基本运算符

  • 算术运算符:+-*///(整除), %(取模), **(幂)
  • 比较运算符:==!=><>=<=
  • 逻辑运算符:andornot

控制结构

条件语句

if x > 0:
    print("正数")
elif x == 0:
    print("零")
else:
    print("负数")

循环结构

  • for 循环:
    for i in range(5):  # 遍历 0 到 4
        print(i)
  • while 循环:
    while x > 0:
        print(x)
        x -= 1

函数定义

使用 def 关键字定义函数:

def greet(name):
    return f"Hello, {name}!"

print(greet("Alice"))  # 输出:Hello, Alice!

数据结构

列表(List)

  • 有序、可变集合:
    fruits = ["apple", "banana", "cherry"]
    fruits.append("orange")  # 添加元素

字典(Dictionary)

  • 键值对集合:
    person = {"name": "Alice", "age": 25}
    print(person["name"])  # 输出:Alice

元组(Tuple)

  • 有序、不可变集合:
    coordinates = (10, 20)

集合(Set)

  • 无序、唯一元素集合:
    unique_numbers = {1, 2, 3, 3}  # 结果为 {1, 2, 3}

文件操作

使用 open 函数读写文件:

with open("file.txt", "r") as file:
    content = file.read()  # 读取文件内容

异常处理

通过 try-except 捕获异常:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("不能除以零")

面向对象编程

类与对象

class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name} 汪汪叫!")

my_dog = Dog("Buddy")
my_dog.bark()  # 输出:Buddy 汪汪叫!

模块与导入

使用 import 导入模块:

import math
print(math.sqrt(16))  # 输出:4.0

列表推导式

简洁生成列表:

squares = [x**2 for x in range(10)]  # [0, 1, 4, 9, ..., 81]

Lambda 函数

匿名函数:

double = lambda x: x * 2
print(double(5))  # 输出:10

Python 爬虫常用库分类介绍

1. 请求网页

(1)requests

  • 作用:模拟浏览器发送 HTTP/HTTPS 请求,GET/POST、携带 Cookie、请求头、代理、文件上传都支持。
  • 优点:API 简洁,替代老旧 urllib,日常爬虫首选。
  • 示例:requests.get(url, headers=headers, proxies=proxy)

(2)urllib

  • 内置模块:urllib.request发请求、urllib.parse处理 URL 参数、urllib.error捕获异常。
  • 缺点:代码繁琐,项目中一般优先 requests。

(3)aiohttp

  • 作用:基于 asyncio 实现异步并发请求,爬取大量链接速度远高于同步 requests。
  • 适用:批量爬取、高并发场景。

2. 页面数据解析

(1)BeautifulSoup4(bs4)

  • 解析 HTML/XML,通过标签、class、id 筛选内容,语法简单,容错强(网页不规范也能解析)。
  • 搭配解析器:lxml(速度最快)、html.parser(内置)。

(2)lxml

  • 高性能 XML/HTML 解析库,支持 XPath 语法,解析速度远超 bs4,大规模爬虫常用。

(3)pyquery

  • 仿 jQuery 选择器写法,熟悉前端的人上手快,语法简洁。

(4)re 正则表达式

  • 无需额外安装,提取零散无规律文本(手机号、链接、数字),复杂网页不推荐,维护困难。

3. 动态网页渲染

普通 requests 只能拿到静态 HTML,JS 动态加载的数据需要浏览器内核渲染:

(1)Selenium

  • 驱动真实浏览器(Chrome/Firefox),完整执行 JS,模拟点击、下拉、登录。
  • 缺点:占用资源大、速度慢,易被网站识别爬虫。

(2)Playwright

  • 比 Selenium 更轻量,自动安装浏览器,支持异步、拦截请求、模拟移动端,反爬兼容性更好。

(3)Pyppeteer

  • Python 版 Puppeteer,基于 Chromium 无头浏览器,渲染动态页面。

(4)Splash

  • 轻量渲染服务,配合 requests 使用,适合分布式爬虫。

4. 数据持久化

  • csv:内置 csv 库,存储表格数据;
  • openpyxl/xlsxwriter:写入 Excel;
  • pymysql:存入 MySQL;
  • pymongo:存入 MongoDB(爬虫非结构化数据首选);
  • json:内置 json 库,保存接口 JSON 数据。

5. 代理、验证码、分布式辅助库

  1. fake-useragent:自动生成随机浏览器 UA,伪装请求头;
  2. proxy_pool:代理 IP 池,解决 IP 封禁;
  3. ddddocr/captcha:图像验证码识别;
  4. redis:分布式爬虫去重、任务队列;
  5. scrapy:完整爬虫框架(集成请求、解析、管道、去重、调度),大型项目专用。

随意爬取的危害

一、对网站方

  1. 大量请求挤占服务器带宽,造成网站卡顿、瘫痪,属于网络干扰,要赔偿损失;
  2. 批量抓取用户隐私、原创内容,侵犯平台著作权与用户隐私,平台可起诉索赔。

二、爬虫操作者自身法律风险

  1. 民事责任:侵权、盗用内容需赔钱,账号永久封禁;
  2. 行政处罚:网信、公安责令删数据、高额罚款;
  3. 刑事责任:抓取手机号、身份证等大量个人信息,或破坏网站运营,会触犯刑法,面临拘留、判刑。

三、自身安全隐患

  1. 高频爬取导致本机 IP 被拉黑,无法正常访问网站;
  2. 免费代理会窃取你的登录 Cookie、账号信息;
  3. 爬取恶意页面可能导致本地设备中毒、信息泄露。

四、行业与网络秩序危害

恶意爬虫会扰乱平台正常经营(电商比价、抢票、刷单爬虫),破坏公平环境,严重的会被列入网络失信名单。

更多推荐