原文: http://106.13.73.98/__/137/
安装:pip install selenium
补充:
常用的 find_element 系列函数:
find_element_by_ID 根据 ID 找节点 find_element_by_name 根据 name 找节点 find_element_by_xpath 根据 xpath 找节点 find_element_by_tag_name 根据 标签 找节点 find_element_by_class_name 根据 class 找节点
其他:
get_cookies() 获取cookies,比如 *** 作浏览器登录后获取cookies,然后进行其它 *** 作 page_source 返回字符串类型的页面内容
selenium
对外提供的接口可以 *** 作浏览器,然后让浏览器去完成自动化的 *** 作。
使用selenium
的前提是,你的电脑得有浏览器和该浏览器版本对应的驱动版本。
我们一般使用谷歌或者PhantomJs浏览器,本文将使用谷歌浏览器。
请根据你的谷歌浏览器版本,下载对应的驱动文件
谷歌浏览器版本与驱动版本的对应关系:https://blog.csdn.net/huilan_same/article/details/51896672 谷歌浏览器驱动下载地址:http://Chromedriver.storage.GoogleAPIs.com/index.HTML 常用谷歌浏览器V69-71版本的驱动下载:https://download.csdn.net/download/qq_41964425/10908837案例:使用selenium *** 作谷歌浏览器登录QQ空间并获取好友动态页面内容
import timefrom selenium import webdriver # 创建浏览器的对象,通过该对象可以 *** 作浏览器from lxml import etree# 你也可以这样使用,来实现谷歌无头浏览器(就是让其在后台运行),固定写法:# from selenium.webdriver.Chrome.options import Options# Chrome_options = Options()# Chrome_options.add_argument('--headless')# Chrome_options.add_argument('--disable-gpu')# bro = webdriver.Chrome(executable_path=r'.\chromedriver.exe',Chrome_options=Chrome_options)bro = webdriver.Chrome(executable_path=r'.\chromedriver.exe')# executable_path:指定谷歌浏览器驱动文件路径,请先下载驱动# 向QQ空间登录页面发送请求bro.get(url='https://i.qq.com/')time.sleep(1)# 定位到指定的iframebro.switch_to.frame('login_frame')# 因为QQ空间登录页面是多个页面合成的,因此我们要定位到要 *** 作的页面上# 这里我们定位的iframe就是填写QQ账号密码的那个小框框# 点击账号密码登录bro.find_element_by_ID('switcher_plogin').click()time.sleep(1)# 填写账号密码bro.find_element_by_ID('u').send_keys('请使用你自己的QQ账号') # send_keys() 用于向标签内录入数据time.sleep(1)bro.find_element_by_ID('p').send_keys('请使用你自己的QQ密码')time.sleep(1)# 点击登录按钮bro.find_element_by_ID('login_button').click()time.sleep(1)# 如果你的浏览器也出现提示让你安装flash插件,请打开此注释# bro.find_element_by_ID('QZ_Body').click()# 点击个人中心bro.find_element_by_ID('aIcenter').click()time.sleep(1)# 把网页往下拉(用于获取更多好友动态信息),连拉3次Js = 'window.scrollTo(0,document.body.scrollHeight)'bro.execute_script(Js)time.sleep(1)bro.execute_script(Js)time.sleep(1)bro.execute_script(Js)# 获取好友页面源码page_text = bro.page_source# 注意:这里获取页面源码是非阻塞的,因此这一步骤的暂定等待是有必要的time.sleep(3)# 开始解析获取好友动态tree = etree.HTML(page_text)div_List = tree.xpath('//div[@] | //div[@]')# 打印获取到的好友动态内容for div in div_List: text = div.xpath('.//text()') text = ''.join(text) print(text)# 关闭浏览器bro.quit()
关于 PhantomJs 浏览器
PhantomJs浏览器下载:https://download.csdn.net/download/qq_41964425/10909314
PhantomJs
是一款无界面的浏览器,其自动化的 *** 作流程和上述 *** 作谷歌浏览器是一致的。
由于PhantomJs
是无界面的,为了能够展示自动化 *** 作流程,它还为我们提供了一个截屏功能,使用save_screenshot
函数来实现。
selenium+phantomJs
就是爬虫终极解决方案:有些网站上的内容信息是通过动态加载Js形成的,所以使用普通爬虫程序无法获取动态加载的Js内容。例如豆瓣电影中的电影信息是通过下拉 *** 作动态加载更多的电影信息。
截屏功能的简单示例:
from selenium import webdriver # 创建浏览器的对象,通过该对象可以 *** 作浏览器path = r'.\phantomJs-2.1.1-windows\bin\phantomJs.exe'browser = webdriver.PhantomJs(executable_path=path)# executable_path:指定PhantomJs浏览器的.exe文件# 向百度页面发送请求browser.get(url='https://www.baIDu.com/')# 开始截屏browser.save_screenshot('截屏文件.jpg') # !!# 退出浏览器browser.quit()
但由于PhantomJs
最近已经停止了更新和维护,所以推荐大家可以使用谷歌无头浏览器
,是一款无界面的谷歌浏览器,其用法在上述的案例中有讲解。
关于谷歌浏览器d窗问题的解决方案
如上图,我们使用下面的配置,可以禁止它d出来:from selenium import webdriver # pip install seleniumoptions = webdriver.ChromeOptions()prefs = {'profile.default_content_setting_values' :{'notifications': 2}}options.add_experimental_option('prefs',prefs)bro = webdriver.Chrome(Chrome_options=options,executable_path='你的谷歌浏览器驱动路径')
补充:获取 cookies 字典
for cookie in bro.get_cookies(): cookies[cookie['name']] = cookie['value']
原文: http://106.13.73.98/__/137/
总结以上是内存溢出为你收集整理的【Python selenium】全部内容,希望文章能够帮你解决【Python selenium】所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)