【Python selenium】

【Python selenium】,第1张

概述原文: 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_

原文: 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】所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1191964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存