一、 为什么是Sys模块?
兄弟们,当我们初学爬虫时,注意力肯定都被 requests 的优雅、BeautifulSoup 的强大或者 Scrapy 的框架所吸引。这就像学开车,你先学的是怎么踩油门、打方向盘,而不是先去研究发动机的ECU(行车电脑)。
但当你开熟了,想玩点骚操作——比如弹射起步、漂移过弯,你就必须懂得去调教ECU里的参数。而 sys 模块,就是Python程序的“ECU”!它提供了大量与Python解释器本身交互的变量和函数。
在爬虫的世界里,这意味着什么?意味着你能:
- 不用改代码,就能改变爬虫的行为(比如切换目标网站、分页数)。
- 在程序崩溃时,体面地留下“遗言”(记录错误信息)。
- 解决那些让人头大的“ModuleNotFoundError”,自己掌控模块的寻宝图。
所以,今天咱们就把这个“后台管理员”请到前台,好好盘一盘它在爬虫中的实战用法。
二、 神技一:sys.argv - 让你的爬虫“听令行事”
1. 什么是命令行参数?
想象一下,你写了一个爬虫,专门用来爬取某个电商网站的商品信息。今天你想爬手机,明天想爬电脑。难道你要每天打开代码,把 keyword = "手机" 改成 keyword = "电脑" 吗?太不极客了!
正确的姿势是:在命令行里直接告诉它你要什么。
python my_spider.py 手机 100 # 爬取“手机”关键词,前100条数据
这里的 "手机" 和 100 就是命令行参数。而 sys.argv 就是用来接住这些“命令”的列表。
2. sys.argv 深度解析
- 它是一个列表。
- 第0个元素
sys.argv[0]是脚本本身的名称(例如'my_spider.py')。 - 从第1个元素开始,才是你传入的参数。所以
sys.argv[1]是"手机",sys.argv[2]是"100"(注意,此时它还是字符串类型)。
3. 爬虫实战示例:动态关键词与页数爬虫
我们来写一个模拟爬虫,它根据传入的参数决定爬取什么关键词和多少页。
import sys
import time # 模拟爬取耗时
def main():
# 1. 检查参数数量是否正确
if len(sys.argv) < 3:
print("用法:python {} <关键词> <要爬取的页数>".format(sys.argv[0]))
print("示例:python {} Python 5".format(sys.argv[0]))
sys.exit(1) # 参数不对,直接退出,非0状态码表示错误退出
# 2. 提取参数
keyword = sys.argv[1]
try:
pages = int(sys.argv[2]) # 记得转换类型!
except ValueError:
print("错误:页数必须是一个整数!")
sys.exit(1)
# 3. 开始我们的“爬取”大业
print(f"

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



