前言
Python通过Selenium实现爬虫,本案例基于GoogleChrome实现
下载驱动
下载依赖
引入依赖
1
| from selenium import webdriver
|
创建驱动对象
- 创建驱动对象后会自动打开一个新的浏览器窗口,无论当前是否已经存在一个浏览器窗口
1
| driver = webdriver.Chrome()
|
等待浏览器完全打开
1 2 3 4
| import time
driver = webdriver.Chrome() time.sleep(5)
|
使用完后自动销毁
1 2
| with webdriver.Chrome() as driver: ...
|
指定Chrome路径和用户数据保存路径
<chrome_dir>/chrome.exe:指定Chrome路径
<chrome_dir>/<dir>:指定用户数据保存路径
1 2 3 4 5 6 7
| from selenium.webdriver.chrome.options import Options
options = Options() options.binary_location = r"<chrome_dir>/chrome.exe" options.add_argument(r"user-data-dir=<chrome_dir>/<dir>")
driver = webdriver.Chrome(options=options)
|
指定Chrome驱动路径
1 2 3 4 5
| from selenium.webdriver.chrome.service import Service
service = Service(r"<chrome_drive_dir>/chromedriver.exe")
driver = webdriver.Chrome(service=service)
|
销毁驱动对象
访问URL
<url>:浏览器访问的URL链接
查找元素
引入依赖
1
| from selenium.webdriver.common.by import By
|
ById
<id>:HTML标签的id
1
| res = driver.find_element(by=By.NAME, value="<id>")
|
获取文本数据
- 获取的是HTML标签的
innerText不包含子标签
获取属性值
<key>:属性名
1
| value = res.get_attribute("<key>")
|
模拟点击
ByCSSSelector
.father .son:CSS选择器选择的内容
1
| res_list = driver.find_element(by=By.CSS_SELECTOR, value=".father .son")
|
获取数据
1 2
| for res in res_list: res.text
|
执行JS
<javascript>:JS代码
1
| driver.execute_script("<javascript>")
|
报错
解决问题
传送门
完成
参考文献
Selenium官方中文文档
简书——InsaneLoafer
CSDN——菜菜子想要飞
AnonyEast的博客
博客园——水清梦蓝