admin 管理员组文章数量: 1184232
一、是什么selenium
selenium是一个功能强大的Python库,用几行代码就能控制浏览器,做出自动打开、输入、点击等操作,就像是有一个真正的用户在操作一样。遇到验证码很复杂的网站时,selenium允许让人去手动输入验证码,然后把剩下的操作交给浏览器。
用html写出的静态网页源代码中包含了页面所有信息,因此地址栏的URL就是网页源代码的URL。用json存储的数据不在HTML源代码中,就不能直接使用网址栏的URL,需要在【headers】中找到json数据的真实URL。不论数据存在哪里,当这些请求完成后,会一起在开发者工具的Elements中展示。在遇到页面交互复杂或是URL加密逻辑复杂的情况时,selenium可以真实地打开一个浏览器,等待所有数据都加载到Elements中之后,再把这个网页当做静态网页爬取。
用selenium写的脚本,让浏览器自动打开网页,然后输入文字,点击提交按钮:
二、怎么用selenium
安装selenium库:Windows电脑在命令窗口键入pip install selenium,Mac电脑在命令窗口键入pip3 install selenium。
selenium的脚本可以控制所有常见浏览器的操作,在使用之前,需要安装浏览器的驱动并设置浏览器引擎。安装Chrome浏览器驱动的链接:https://localprod.pandateacher/python-manuscript/crawler-html/chromedriver/ChromeDriver.html。设置浏览器引擎方法是:
from selenium import webdriver #从selenium库中调用webdriver模块driver = webdriver.Chrome() # 设置引擎为Chrome,真实地打开一个Chrome浏览器driver是一个实例化的浏览器,get(URL)是webdriver的一个方法,能够打开指定URL的网页。driver打开网页的过程,就获取了相应的数据:
driver.get('https://localprod.pandateacher/python-manuscript/hello-spiderman/') # 打开网页并获取数据三、selenium解析与提取
BeautifulSoup可以解析网页源代码,然后提取其中的数据。selenium库同样也具备解析数据、提取数据的能力。区别是:selenium所解析提取的,是Elements中的所有数据,而BeautifulSoup所解析的则只是Network中第0个请求的响应。因此用selenium把网页打开,所有信息就都加载到Elements中,就可以把动态网页当做静态网页爬取。
Selenium也具有类似BeautifulSoup提取数据的方法。
Selenium提取出的数据是一个列表,列表的内容就是WebElements对象。与BeautifulSoup中的Tag对象类似,也有一个属性.text,可以把提取出的元素用字符串格式显示。还可以用.get_attribute()方法通过属性名提取属性的值。
find_element_by_与BeautifulSoup中的find类似,可以提取出网页中第一个符合要求的元素。BeautifulSoup提取所有元素的方法find_all,selenium提取多个元素的方法是将element换成复数elements。
四、selenium+BeautifulSoup
除了用selenium解析与提取数据,还可以使用selenium获取网页,然后交给BeautifulSoup解析和提取。BeautifulSoup提取数据时需要用到.text方法将requests.get()获取到的是Response对象以字符串形式返回,再把字符串格式的网页源代码解析为BeautifulSoup对象,然后再从中提取数据。而selenium刚好可以获取到渲染完整的字符串格式的网页源代码——使用driver的一个方法:page_source。
HTML源代码字符串 = driver.page_source五、实操-自动控制浏览器
# 本地Chrome浏览器设置方法from selenium import webdriver # 从selenium库中调用webdriver模块import time # 调用time模块driver = webdriver.Chrome() # 设置引擎为Chrome,真实地打开一个Chrome浏览器driver.get('https://localprod.pandateacher/python-manuscript/hello-spiderman/') # 访问页面time.sleep(2) # 暂停两秒,等待浏览器缓冲teacher = driver.find_element_by_id('teacher') # 找到【请输入你喜欢的老师】下面的输入框位置teacher.send_keys('**') # 输入文字assistant = driver.find_element_by_name('assistant') # 找到【请输入你喜欢的助教】下面的输入框位置assistant.send_keys('***') # 输入文字button = driver.find_element_by_class_name('sub') # 找到【提交】按钮button.click() # 点击【提交】按钮time.sleep(1)driver.close() # 关闭浏览器
版权声明:本文标题:selenium控制浏览器打印网页_爬虫(六)——Selenium自动控制浏览器 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1765056597a3343640.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论