Python中如何使用PhantomJS进行动态网页爬虫?
刚接触动态爬虫,还没搞明白怎么玩,目前想爬网站把爬到的数据都能保存为像抓包那样的格式,有什么好的方式么,希望大牛们多多指教
希望爬取到的 get post 等请求都像下面这样的格式:
GET / HTTP/1.1
Host: www.weibo.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Upgrade-Insecure-Requests: 1
Cookie: test
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Connection: keep-alive
Python中如何使用PhantomJS进行动态网页爬虫?
1 回复
用PhantomJS做动态网页爬取,现在更推荐用Selenium配合无头浏览器。PhantomJS已经停止维护了,不过思路是相通的。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
# 设置Chrome无头模式
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
try:
# 访问目标网页
driver.get('https://example.com')
# 等待特定元素加载(关键!)
wait = WebDriverWait(driver, 10)
element = wait.until(
EC.presence_of_element_located((By.CLASS_NAME, "target-class"))
)
# 获取动态加载的内容
dynamic_content = driver.find_element(By.CLASS_NAME, "target-class").text
# 如果需要执行JS
result = driver.execute_script("return document.title;")
print(f"获取到的内容: {dynamic_content}")
finally:
driver.quit()
核心要点:
- 等待机制:用
WebDriverWait等元素加载完再操作,比time.sleep()靠谱 - 无头模式:
--headless参数让浏览器在后台运行 - 元素定位:用ID、CLASS、XPATH等定位动态内容
- JS执行:
execute_script()能直接跑JavaScript代码
如果页面有复杂交互(点击、滚动),就在定位元素后加上.click()或执行滚动JS。
建议直接用Selenium+Chrome/Firefox的无头模式。

