Selenium简单介绍
代码语言:javascript复制https://selenium-python.readthedocs.io/
https://python-selenium-zh.readthedocs.io/zh_CN/latest/
什么是selenium
通过浏览器驱动来自动化操纵浏览器的工具
代码语言:javascript复制selenium -> 传输指令 -> webdriver -> 转换指令 -> 浏览器
webdriver的出现是为了兼容各语言各版本, 使java或者python都可以通过同一个webdriver达到操纵浏览器的目的.
selenium常用来做什么?
本质是模拟用户行为, 可以用于以下领域
- 自动化测试
- 获取网页数据
- 复杂动态网页
- 账号比较重要, 保证不被反爬风控
- 数据量小, 但是验证复杂的网站
- 获取session
- 用户端无法获取session, 但是selenium可以
Selenium安装
安装Python版本的selenium
代码语言:javascript复制pip install selenium
查看当前浏览器版本
代码语言:javascript复制最新版本为89
下载对应浏览器版本的chrome driver
代码语言:javascript复制http://npm.taobao.org/mirrors/chromedriver/
下载后解压至特定目录
代码语言:javascript复制H:driverschromedriver.exe
快速启动
创建一个webdriver驱动实例
代码语言:javascript复制from selenium import webdriver
driver_path = r"H:driverschromedriver.exe"
browser = webdriver.Chrome(executable_path=driver_path)
浏览器设置
代码语言:javascript复制chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("disable-blink-features=AutomationControlled")
browser = webdriver.Chrome(executable_path=driver_path,
请求网址
定位搜索框并模拟键盘输入
代码语言:javascript复制search_input = browser.find_element_by_css_selector('input[aria-label="搜索"]')
search_input.send_keys("鼠标")
定位搜索按钮并模拟鼠标输入
代码语言:javascript复制search_button = browser.find_element_by_css_selector('button[aria-label="搜索"]')
search_button.click()
页面解析
代码语言:javascript复制item_array = search.parse_jd_item(browser.page_source)
代码语言:javascript复制from selenium import webdriver
from jd_crawler.jd_parser import search
import time
driver_path = r"H:driverschromedriver.exe"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("disable-blink-features=AutomationControlled")
browser = webdriver.Chrome(executable_path=driver_path, chrome_options=chrome_options)
def sim_search(keyword, url):
browser.get(url)
search_input = browser.find_element_by_css_selector('input[aria-label="搜索"]')
search_input.send_keys(keyword)
search_button = browser.find_element_by_css_selector('button[aria-label="搜索"]')
search_button.click()
def main(keyword, url):
sim_search(keyword, url)
time.sleep(3)
item_array = search.parse_jd_item(browser.page_source)
print(item_array)
browser.close()
if __name__ == "__main__":
jd_url = "https://www.jd.com/"
main("鼠标", jd_url)