爬虫万能方法---selenium

mac2026-08-31  11

selenium中查找页面的方法

1.通过id查找

driver.find_element_by_id() 如: driver.find_element_by_id('kw')

2.通过css选择器查找

driver.find_element_by_css_selector() id:#id值 class:.class值 标签:标签名 如: driver.find_element_by_css_selector('#kw')

3.通过xpath查找

driver.find_element_by_xpath(xpath语法)

等待的种类

1.强制等待

time.sleep()

2.隐式等待

##隐式等待就是等到页面全部加载完成,比如js,css或者图片全请求到加载到页面,也就是我们常看到的页面不在转圈圈为止,程序才会继续运行。 driver.implicitly_wait(10)

3.显式等待

## 导包 from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By ## 步骤: ## 1.创建等待对象 wait = WebDriverWait( driver,#浏览器驱动对象 10,最大等待时长 0.5,扫描间隔 ) ## 2.wait.until(等待条件)--->等待条件成立程序才继续运行。 ### 等待条件在selenium中有个专门的模块来设置了一些条件-------->expected_conditions as EC ### 最常用的条件有一下两个: EC.presence_of_element_located(( 查找的方法:By.ID,By.XPATH,By.CAA_SELECTOR, 查找的方法对应的查找语法 ))------->只要有一个符合条件的元素加载出来就通过 EC.presence_of_all_elements_located(( 查找的方法:By.ID,By.XPATH,By.CAA_SELECTOR, 查找的方法对应的查找语法 ))----->所有符合条件的元素都加载出来才行 ### 3.wait.until方法的返回值是一个对应定位器所定位到的webelement对象。你如果需要对这个webelment对象做一些点击或者其他操作,可以很方便的做到。

使用selenium+PhantoJS请求页面

导包:

from selenium import webdriver

创建一个driver对象

driver = webdriver.PhantomJS()

请求url

driver.get(url)

等待

from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.suppory import expected_conditions as EC from selenium.webdriver.common.by import By ### 创建等待对象 wait = WebDriverWait(driver,10) ### 设置等待条件 """ 最常用的条件 EC.presence_of_element_located(( 查找的方法:By.ID,By.XPATH,By.CAA_SELECTOR, 查找的方法对应的查找语法 ))------->只要有一个符合条件的元素加载出来就通过 EC.presence_of_all_elements_located(( 查找的方法:By.ID,By.XPATH,By.CAA_SELECTOR, 查找的方法对应的查找语法 ))----->所有符合条件的元素都加载出来才行 """ ### webElement:是一个定位器定位到的对象,可以通过该对象做一些点击或其他操作 webElement = wait.until(等待条件) ## 等待条件成立才继续运行

获取页面返回结果

driver.page_source

利用xpath,re解析页面内容

selenium爬取模板

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from lxml import etree import time import requests class XXX(object): ## 初始化操作 def __init__(self,url): self.url = url self.driver = webdriver.PhantomJS() self.wait = WebDriverWait(self.driver,10) ### 判断是否获取到内容 def get_text(self,text): if text: return text[0] else: return '' ### 通过selenium获取页面内容 def get_html_by_selenium(self,url,xpath): self.driver.get(url) webElement = self.wait.until(EC.presence_of_element_located((By.XPATH,xpath))) html_str = self.driver.page_source return html_str ## 解析返回的页面 def parse(self): pass if __name__ == '__main__': base_url = '' for i in range(1,2): url = base_url.format(i) xxx = XXX(url) xxx.parse()

selenium 方法总结

1.获取当前页面的Url

方法:current_url 实例:driver.current_url

2.获取元素坐标

方法:location 解释:首先查找到你要获取元素的,然后调用location方法 实例:driver.find_element_by_xpath("xpath").location

3.表单的提交

方法:submit 解释:查找到表单(from)直接调用submit即可 实例:driver.find_element_by_id("form1").submit()

4.获取CSS的属性值

方法:value_of_css_property(css_name) 实例:driver.find_element_by_css_selector("input.btn").value_of_css_property("input.btn")

5.获取元素的属性值

方法:get_attribute(element_name) 实例:driver.find_element_by_id("kw").get_attribute("kw")

6.判断元素是否被选中

方法:is_selected() 实例:driver.find_element_by_id("form1").is_selected()

7.返回元素的大小

方法:size 实例:driver.find_element_by_id("iptPassword").size 返回值:{'width': 250, 'height': 30}

8.判断元素是否显示

方法:is_displayed() 实例:driver.find_element_by_id("iptPassword").is_displayed()

9.判断元素是否被使用

方法:is_enabled() 实例:driver.find_element_by_id("iptPassword").is_enabled()

10.获取元素的文本值

方法:text 实例:driver.find_element_by_id("iptUsername").text

11.元素赋值

方法:send_keys(*values) 实例:driver.find_element_by_id("iptUsername").send_keys('admin')

12.返回元素的tagName

方法:tag_name 实例:driver.find_element_by_id("iptUsername").tag_name

13.删除浏览器所有的cookies

方法:delete_all_cookies() 实例:driver.delete_all_cookies()

14.删除指定的cookie

方法:delete_cookie(name) 实例:deriver.delete_cookie("my_cookie_name")

15.关闭浏览器

方法:close() 实例:driver.close()

16.关闭浏览器并且退出驱动程序

方法:quit() 实例:driver.quit()

17.返回上一页

方法:back() 实例:driver.back()

18.清空输入框

方法:clear() 实例:driver.clear()

19.浏览器窗口最大化

方法:maximize_window() 实例:driver.maximize_window()

20.查看浏览器的名字

方法:name 实例:drvier.name

21.返回当前会话中的cookies

方法:get_cookies() 实例:driver.get_cookies()

22.根据cookie name 查找映射Value值

方法:driver.get_cookie(cookie_name) 实例:driver.get_cookie("NET_SessionId")

23.截取当前页面

方法:save_screenshot(filename) 实例:driver.save_screenshot("D:\\Program Files\\Python27\\NM.bmp")
最新回复(0)