我曾用selenium爬数据的日子

申明浏览器类型

from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Safari()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()

访问页面

browser.get("www.baidu.com")
browser.page_source # 获取页面js
browser.close() # 关闭网页,此步骤为必须项,不关闭在多线程情况下,可能导致电脑cpu,内存爆炸

定位元素的方法

from selenium.webdriver.common.by import By
#id查询
content = browser.find_element_by_id("xx")
content = browser.find_element(By.ID, "xx")
contents = browser.find_elements(By.ID, "xx")
contents = browser.find_elements_by_id("xx")
#name查询
content = browser.find_element_by_name("xx")
content = browser.find_element(By.NAME, "XX")
#x_path查询
content = browser.find_element_by_xpath("xx")
content = browser.find_element(By.XPATH, "XX")
#完整超链接定位
content = browser.find_element_by_link_text("xx")
content = browser.find_element(By.LINK_TEXT, "XX")
#部分超链接定位
content = browser.find_element_by_partial_link_text("xx")
content = browser.find_element(By.PARTIAL_LINK_TEXT, "XX")
#通过标签定位
content = browser.find_element_by_tag_name("xx")
content = browser.find_element(By.TAG_NAME, "XX")
#class名定位
content = browser.find_element_by_class_name("xx")
content = browser.find_element(By.CLASS_NAME, "XX")
#css选择器定位
content = browser.find_element_by_css_selector("xx")
content = browser.find_element(By.CSS_SELECTOR, "XX")

# 元素的交互

# 设置窗口不显示
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options = chrome_options)
# 设置窗口大小
browser.set_window_size(1600,600)
# 控制浏览器前进后退
browser.back()
browser.forward()
# 刷新页面
browser.refresh()
# 为输入框输入值
input = browser.find_element_by_id("xx")
input.send_keys("xx")
# 清除文本
input.clear()
# 点击按钮
button = browser.find_element_by_id("xx")
button.click()
# 获取文本
li = browser.find_element_by_id("xx")
li.text
# 提交表单,带form的标签
browser.submit()
# 设置元素是否可见
input.is_displayed()

鼠标事件

from selenium.webdriver.common.action_chains import ActionChains
content = browser.find_element_by_name("xx")
# 悬停至指定元素
ActionChains(browser).move_to_element(content).perform()
# 悬停并双击
ActionChains(browser).move_to_element(content).double_click()
# 拖动
ActionChains(browser).move_to_element(content).drag_and_drop()

断言

# 当前网页主题和URL
browser.title
browser.current_url

设置网页等待时间方式

# 固定时间
import time
time.sleep(1)
# 隐式等待,规定时间内获取dom则继续执行,否则抛出异常
browser.implicitly_wait(30)
# 带条件的等待
from selenium.webdriver.support.ui import WebDriverWait
content = WebDriverWait(browser,10).until(lambda x : browser.find_element_by_name("xx") )

其他

# 执行外部js事件
browser.execute_script("代码")
# 截图
browser.get_screenshot_as_png("")
# 退出所有页面
browser.quit()
# 退出单个网页
browser.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值