python基础与爬虫
·
Python是一种高级、解释型、通用的编程语言,以其简洁易读的语法和强大的功能而广受欢迎。它支持多种编程范式(如面向对象、函数式编程),并拥有丰富的标准库和第三方模块。Python的动态类型和自动内存管理使其适合快速开发,广泛应用于Web开发、数据分析、人工智能、网络安全等领域。
变量与数据类型
- 变量无需声明类型,直接赋值即可:
x = 10 # 整数 y = 3.14 # 浮点数 name = "Alice" # 字符串 is_valid = True # 布尔值
基本运算符
- 算术运算符:
+,-,*,/,//(整除),%(取模),**(幂) - 比较运算符:
==,!=,>,<,>=,<= - 逻辑运算符:
and,or,not
控制结构
条件语句
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. 代理、验证码、分布式辅助库
- fake-useragent:自动生成随机浏览器 UA,伪装请求头;
- proxy_pool:代理 IP 池,解决 IP 封禁;
- ddddocr/captcha:图像验证码识别;
- redis:分布式爬虫去重、任务队列;
- scrapy:完整爬虫框架(集成请求、解析、管道、去重、调度),大型项目专用。
随意爬取的危害
一、对网站方
- 大量请求挤占服务器带宽,造成网站卡顿、瘫痪,属于网络干扰,要赔偿损失;
- 批量抓取用户隐私、原创内容,侵犯平台著作权与用户隐私,平台可起诉索赔。
二、爬虫操作者自身法律风险
- 民事责任:侵权、盗用内容需赔钱,账号永久封禁;
- 行政处罚:网信、公安责令删数据、高额罚款;
- 刑事责任:抓取手机号、身份证等大量个人信息,或破坏网站运营,会触犯刑法,面临拘留、判刑。
三、自身安全隐患
- 高频爬取导致本机 IP 被拉黑,无法正常访问网站;
- 免费代理会窃取你的登录 Cookie、账号信息;
- 爬取恶意页面可能导致本地设备中毒、信息泄露。
四、行业与网络秩序危害
恶意爬虫会扰乱平台正常经营(电商比价、抢票、刷单爬虫),破坏公平环境,严重的会被列入网络失信名单。
更多推荐

所有评论(0)