爬虫解析Selenium 之(九) --- Selenium模块

Selenium

  elenium 是一套完整的web应用程序测试系统,

  包含:

    1. 测试的录制(selenium IDE)

    2.编写及运行(Selenium Remote Control)

    3.测试的并行处理(Selenium Grid)

  Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。

  selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。

selenium使用

 1 # 从selenium中导入webdriver
 2 from selenium import webdriver
 3 from time import sleep
 4
 5 # 创建一个浏览器驱动对象
 6 browser = webdriver.Chrome(executable_path=r"/Users/guoyapeng/Downloads\chromedriver")
 7 print(browser) # <selenium.webdriver.chrome.webdriver.WebDriver (session="48509673bcc1473b2165e9db6f3593bc")>
 8
 9 # 用浏览打开一个网页
10 browser.get("https://www.baidu.com/")
11 sleep(1)
12
13 # 查找页面上的某个标签元素
14 # news = browser.find_elements_by_class_name
15 news = browser.find_element_by_link_text("新闻")
16 print(news)
17 # 点击
18 news.click()
19 # 向文本框中输入内容
20 input = browser.find_element_by_id("ww")
21 input.send_keys("老王")
22 browser.find_element_by_id("s_btn_wr").click()
23
24 # 获取经过浏览器解析运行以后生成的那个html源码
25 html = browser.page_source
26 print(html)
27 # 退出浏览器
28 browser.quit()

基本使用

  用python写爬虫的时候,主要用的是selenium的Webdriver,我们可以通过下面的方式先看看Selenium.Webdriver支持哪些浏览器

  

  

  这里要说一下比较重要的PhantomJS,PhantomJS是一个而基于WebKit的服务端JavaScript API,支持Web而不需要浏览器支持,

  其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试

声明浏览器对象

1 from selenium import webdriver
2
3 browser = webdriver.Chrome()
4 browser = webdriver.Firefox()

访问页面

1 from selenium import webdriver
2
3 browser = webdriver.Chrome()
4 # 自动打开Chrome浏览器,并登陆百度打印百度首页的源代码,然后关闭浏览器
5 browser.get("http://www.baidu.com")
6 print(browser.page_source)
7 browser.close()

查找元素

单个元素查找

 1 from selenium import webdriver
 2
 3 browser = webdriver.Chrome()
 4 browser.get("http://www.taobao.com")
 5
 6 input_first = browser.find_element_by_id("q") # 第一种是通过id的方式
 7 input_second = browser.find_element_by_css_selector("#q") # 第二个中是CSS选择器
 8 input_third = browser.find_element_by_xpath(‘//*[@id="q"]‘) # 第三种是xpath选择器
 9 # 结果都是相同的
10 print(input_first)
11 print(input_second)
12 print(input_third)
13 browser.close()

  常用的查找元素方法

1 find_element_by_name
2 find_element_by_id
3 find_element_by_xpath
4 find_element_by_link_text
5 find_element_by_partial_link_text
6 find_element_by_tag_name
7 find_element_by_class_name
8 find_element_by_css_selector

  By方式是比较通用一种方式

1 from selenium import webdriver
2 from selenium.webdriver.common.by import By. # 需要By模块所以需要导入
3
4 browser = webdriver.Chrome()
5 browser.get("http://www.taobao.com")
6 # 方式是通用的,browser.find_element(By.ID,"q")这里By.ID中的ID可以替换为其他几个
7 input_first = browser.find_element(By.ID,"q")
8 print(input_first)
9 browser.close()

多个元素查找

  多个元素和单个元素的区别:多个元素是find_elements,单个元素是find_element

1 from selenium import webdriver
2
3 browser = webdriver.Chrome()
4 browser.get("http://www.taobao.com")
5 lis = browser.find_elements_by_css_selector(‘.service-bd li‘)
6 print(lis)    # 获得就是一个列表
7 browser.close()

  也是可以通过导入from selenium.webdriver.common.by import By 这种方式实现

  lis = browser.find_elements(By.CSS_SELECTOR,‘.service-bd li‘)

1 find_elements_by_name
2 find_elements_by_id
3 find_elements_by_xpath
4 find_elements_by_link_text
5 find_elements_by_partial_link_text
6 find_elements_by_tag_name
7 find_elements_by_class_name
8 find_elements_by_css_selector

元素交互操作

  对于获取的元素调用交互方法

  程序会自动打开Chrome浏览器并打开淘宝输入ipad,然后删除,重新输入MakBook pro,并点击搜索

 1 from selenium import webdriver
 2 import time
 3
 4 browser = webdriver.Chrome()
 5 browser.get("http://www.taobao.com")
 6 input_str = browser.find_element_by_id(‘q‘)
 7 input_str.send_keys("ipad")
 8 time.sleep(1)
 9 input_str.clear()
10 input_str.send_keys("MakBook pro")
11 button = browser.find_element_by_class_name(‘btn-search‘)
12 button.click()

交互动作

将动作附加到动作链中串行执行

 1 from selenium import webdriver
 2 from selenium.webdriver import ActionChains
 3
 4 browser = webdriver.Chrome()
 5
 6 url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
 7 browser.get(url)
 8 browser.switch_to.frame(‘iframeResult‘)
 9 source = browser.find_element_by_css_selector(‘#draggable‘)
10 target = browser.find_element_by_css_selector(‘#droppable‘)
11 actions = ActionChains(browser)
12 actions.drag_and_drop(source, target)
13 actions.perform()

执行JavaScript

  可以直接调用js方法来实现一些操作,通过登录知乎然后通过js翻到页面底部,并弹框提示

1 from selenium import webdriver
2 browser = webdriver.Chrome()
3 browser.get("http://www.zhihu.com/explore")
4 browser.execute_script(‘window.scrollTo(0, document.body.scrollHeight)‘)
5 browser.execute_script(‘alert("To Bottom")‘)

获取元素属性
  get_attribute(‘class‘)

1 from selenium import webdriver
2
3 browser = webdriver.Chrome()
4 url = ‘https://www.zhihu.com/explore‘
5 browser.get(url)
6 logo = browser.find_element_by_id(‘zh-top-link-logo‘)
7 print(logo)
8 print(logo.get_attribute(‘class‘))

获取文本值
  text

1 from selenium import webdriver
2
3 browser = webdriver.Chrome()
4 url = ‘https://www.zhihu.com/explore‘
5 browser.get(url)
6 input = browser.find_element_by_class_name(‘zu-top-add-question‘)
7 print(input.text)

获取ID,位置,标签名
  id、location、tag_name、size

 1 from selenium import webdriver
 2
 3 browser = webdriver.Chrome()
 4 url = ‘https://www.zhihu.com/explore‘
 5 browser.get(url)
 6 input = browser.find_element_by_class_name(‘zu-top-add-question‘)
 7 print(input.id)
 8 print(input.location)
 9 print(input.tag_name)
10 print(input.size)

原文地址:https://www.cnblogs.com/TMMM/p/10840981.html

时间: 2024-10-10 12:20:34

爬虫解析Selenium 之(九) --- Selenium模块的相关文章

爬虫解析Re 之(六 ) --- Re模块

正则表达式 正则表达式其实就是特殊的字符串, 帮助进行检索, 校验, 查询等行为,是对字符串操作的一种逻辑公式, 事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符”,这个“规则字符” 来表达对字符的一种过滤逻辑. Python提供的正则表达式机制: 需要导入模块 re 正则表达式使用场景 验证的作用: 密码的验证 用户名的验证 邮箱 手机号等等 爬虫: 查询校验 正则表达式的规则 正则表达式处理字符串的强大工具, 拥有自己独特的语法, 并且拥有一个独立处理正则表达式的引擎. 正

python爬虫积累(一)--------selenium+python+PhantomJS的使用

最近按公司要求,爬取相关网站时,发现没有找到js包的地址,我就采用selenium来爬取信息,相关实战链接:python爬虫实战(一)--------中国作物种质信息网 一.Selenium介绍 Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试.换句话说叫 Selenium 支持这些浏览器驱动.Selenium支持

爬虫(六):Selenium库使用

一:Selenium简介 selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid).Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上. selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题

python爬虫入门(五)Selenium模拟用户操作

爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider) 之间恢宏壮阔的斗争... 小莫想要某站上所有的电影,写了标准的爬虫(基于HttpClient库),不断地遍历某站的电影列表页面,根据 Html 分析电影名字存进自己的数据库. 这个站点的运维小黎发现某个时间段请求量陡增,分析日志发现都是 IP(xxx.xxx.xxx.xxx)这个用户,并且 user-agent 还是 Python-urllib/2.7 ,基于这两点判断非人类后直接在服务器上封杀

爬虫学习 15.scrapy中selenium的应用

爬虫学习 15.scrapy中selenium的应用 引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现,通过浏览器进行url请求发送则会加载出对应的动态加载出的数据.那么如果我们想要在scrapy也获取动态加载出的数据,则必须使用selenium创建浏览器对象,然后通过该浏览器对象进行请求发送,获取动态加载的数据值. 今日详情 1.案例分析: -

Python selenium —— 一定要会用selenium的等待,三种等待方式解读

发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很多人在群里问,这个下拉框定位不到.那个弹出框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待.殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽,然后闪电侠打完回来之后问凹凸曼你为啥还在穿鞋没出门?凹凸曼分分中内心一万只羊驼飞过,欺负哥速度慢,哥不跟你玩了,抛个异常撂挑子了. 那么怎么才能照顾到凹凸曼缓慢的加载速度呢?只有一个办法

Selenium WebDriver VS Selenium RC

WebDriver到底是什么? WebDriver是一个Web的自动化测试框架,它支持你执行你的测试用例在不同的浏览器上面,并不像Selenium一样只支持Firefox. WebDriver也支持你通过一种编程语言来创建你的测试脚本(这是不可能的在Selenium IDE里面). 你能用条件判断语句,比如 if-then-else或者是 Switch-Case 你也能使用循环语句,比如do-while. 下面的这些编程语言WebDriver都支持: Java .net php Python P

Selenium错误:selenium.common.exceptions.WebDriverException: Message: &quot;Can&#39;t load the profile.

错误描述:在python代码中通过selenium来初始化一个firefox浏览器失败,看了下selenium的版本是2.35,然后用firefox --version看了下是28.0,firefox好像不听话自动升级了导致了旧版selenium不支持. Traceback (most recent call last): File "C:\Python27\erSiteCompare.py", line 528, in sys.exit(main()) File "C:\P

Selenium Web 自动化 - Selenium常用API

Selenium Web 自动化 - Selenium常用API 2016-08-01 1 WebElement相关方法2 iFrame的处理3 操作下拉选择框4 处理Alert5 处理浏览器弹出的新窗口6 执行JS脚本7 等待元素加载8 模拟键盘操作9 设置浏览器窗口大小10 上传文件11 Selenium处理HTML5 1 WebElement相关方法 Method   Summary void clear() If   this element is a text entry elemen