简介
? ? ? ? 如今的网站反爬手段层出不穷,不像以前那么简单,网页在后端渲染好数据,再发送给客户端。现在通用的网页技术,前后端分离,前端中通过js函数发送请求向后端请求数据然后在渲染数据,因此,我们要是简单的发送requests请求,最后得到只是一堆js函数
? ? ? ? 当然,爬虫中也有相应的破解方法:selenium自动化工具,那就是驱动浏览器去模拟人为地获取数据
安装
1、安装selenium库
pip install selenium
# 上面命令安装失败请用下面命令
pip install selenium -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
2、ChromeDriver
2.1、如果Selenium要和Chrome等主流浏览器衔接,则对应的浏览器需要安装驱动
2.2、比如:selenium要和Chrome连接,则需要安装 ChromeDriver 驱动
2.3、在 ChromeDriver Mirror 找与Chrome对应版本的驱动(相近的版本也可以)
?
2.4、下载并解压后,把chromedriver.exe 放到工程目录下
2.5、确保Chrome浏览器进行环境变量设置
使用
1、访问百度首页
百度一下,你就知道
2、编写代码
from selenium import webdriver
from time import sleep
def Test(url):
# 创建驱动配置
option = webdriver.ChromeOptions()
# 配置后台驱动浏览器
# option.add_argument('headless')
# 创建driver驱动对象
driver = webdriver.Chrome(executable_path='./chromedriver.exe', chrome_options=option)
# 访问页面
driver.get(url)
# 通过标签id,定位输入框,输入搜索值
driver.find_element_by_id('kw').send_keys('csdn')
sleep(1)
# 通过标签id,定位搜索按钮
driver.find_element_by_id('su').click()
sleep(5)
# 截图
driver.save_screenshot('baidu.png')
# 获取当前浏览器窗口的网页
content = driver.page_source
print(content)
if __name__ == '__main__':
url = 'https://www.baidu.com/'
Test(url)
总结
常用的selenium方法
# 通过标签的id值锁定标签(不推荐)
driver.find_element_by_id()
# 通过xpath语法锁定标签
driver.find_element_by_xpath()
# 清空锁定的标签的值
driver.find_element_by_xpath().clear()
# 往锁定的标签中填写值
driver.find_element_by_xpath().send_keys()
# 获取当前驱动的浏览器的Cookies值
driver.get_cookies()
# 获取当前浏览器窗口中的网页(破解动态数据)
driver.page_source
# 截图当前浏览器的窗口
driver.save_screenshot()
# 点击锁定的标签
driver.find_element_by_id().click()
|