番外篇:秘境探险

第四十章:傀儡之术 (Selenium)

← 上一章 | 返回宗门地图
路人
Py
师尊!那些凡间网站(使用 JavaScript 渲染的网页)太狡猾了!
我的 Requests 搜魂大法根本抓不到它们的内容!
它们一定要见到真正的 "人" 才肯显露真容!
吉多
老祖
既然它们要见 "人",那你便造一个 "傀儡" 给它们看!
习得 Selenium 傀儡术,你便可操纵浏览器傀儡,
模拟真人的点击、输入、滚动,让那些动态网页无所遁形!

1. 炼制傀儡 (WebDriver)

你需要先下载对应的 浏览器驱动 (Driver),比如 Chrome 的 chromedriver。

然后念动咒语,召唤傀儡:

puppet.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 召唤 Chrome 傀儡
driver = webdriver.Chrome()

# 命令傀儡前往藏经阁 (Google/Baidu)
driver.get("https://www.python.org")

# 傀儡眼中看到的世界
print(driver.title)  # "Welcome to Python.org"

2. 操控肢体 (Interaction)

你可以命令傀儡去点击、输入、寻找宝物。

# 寻找搜索框 (通过 name 属性)
search_box = driver.find_element(By.NAME, "q")

# 输入 "pycon"
search_box.send_keys("pycon")

# 模拟按下回车键
search_box.send_keys(Keys.RETURN)

# 等待页面加载 (简单粗暴法,高手用 WebDriverWait)
time.sleep(3)

# 获取结果
results = driver.find_elements(By.CSS_SELECTOR, "ul.list-recent-events li")
for res in results:
    print(res.text)

# 销毁傀儡
driver.quit()
神仙
姐姐
现在的网站都有 "反傀儡结界" (反爬虫)。
如果不想看到浏览器弹出来吓人,可以用 无头模式 (Headless)
那样傀儡就会隐身工作,只把结果带回来!
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # 隐身术
driver = webdriver.Chrome(options=options)

🎮 试练:傀儡核心

任务:Selenium 中用于定位页面元素的方法通常都在哪个子模块中?(提示:By.ID 的那个 By)

傀儡正在等待指令核心...
>>>
下一章:观星秘术 →