爬虫实战之Selenium自动化环境搭建及基本使用

Selenium自动化环境搭建及基本使用操作

目录

环境搭建

  1. 下载chromedriver,跳转链接: chromedriver.
  2. 解压至浏览器(我的是Chrome)安装目录下,为exe文件,记下路径。
  3. 电脑属性中配置环境变量,将路径复制进去。
  4. 在终端输入pip install selenium命令,安装selenium。
# ------------------Selenium元素定位---------------------------------
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import Service

'''注意需要将chromedriver.exe放在chrome的安装目录下,path的路径是安装目录下的chromedriver.exe,同时配置环境变量'''
path = 'D:\Google\Chrome\Application\chromedriver.exe'

# 出现的错误(已经解决)
"""selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary"""
# 又出现需要Service,反复查询和试验,确定为以下代码:
service = Service(path)
browser = webdriver.Chrome(service=service)

url = 'https://www.jd.com/'
browser.get(url)
# ----------------------------------------------------------崩溃了!!!

元素定位

# ------------------------元素定位-六种方法-------------------------------------
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import Service
from selenium.webdriver.common.by import By  # 新的find_element代替了旧的find_element_by_id,需要引入的函数

path = 'D:\Google\Chrome\Application\chromedriver.exe'

service = Service(path)
browser = webdriver.Chrome(service=service)

url = 'https://www.jd.com/'
browser.get(url)

# 1.根据id查找,id="J_feeds"
element = browser.find_element_by_id('J_feeds')
print(element)
'''DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead'''
"""结果为:(找到了)
<selenium.webdriver.remote.webelement.WebElement (session="f22a28779d66ba58817a34a4b0748438", element="999134af-a201-488f-9994-4403bdb77154")>"""
# 上面显示方法过时了,下面为新方法的使用:
'''新的用法find_element(By.ID, 'J_feeds')'''    # J_feeds,为你推荐
element = browser.find_element(By.ID, 'J_feeds')
print(element)
"""<selenium.webdriver.remote.webelement.WebElement (session="3f612dac1c7c428f573ada2d9a1037e5", element="00bb9643-bf4f-42d4-a864-dfa8164802ac")>"""

# 2.根据name查找,name="description"
element = browser.find_element_by_name('description')
print(element)
''' DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead'''
"""结果为:(找到了)
<selenium.webdriver.remote.webelement.WebElement (session="00169398d51c869c59b6ebce2c9998b9", element="e7c0e31e-cccd-44b7-800e-696610b09902")>"""
# 上面显示方法过时了,下面为新方法的使用:
element = browser.find_element(By.NAME, 'description')
print(element)

# 3.根据xpath查找,
element = browser.find_element_by_xpath('//*[@id="J_feeds"]')
print(element)

element = browser.find_element(By.XPATH, '//*[@id="J_feeds"]')
print(element)

# 4.根据标签名字tag_name查找,
element = browser.find_element_by_tag_name('a')
print(element)

element = browser.find_element(By.TAG_NAME, 'a')
print(element)

# 5.根据css_selector查找,使用bs4语法来获取对象   (注意与xpath的路径区别)
element = browser.find_elements_by_css_selector('#J_seckill > div > div > div.seckill-list > div > div > div > a:nth-child(5)')
print(element)

element = browser.find_elements(By.CSS_SELECTOR, '#J_seckill > div > div > div.seckill-list > div > div > div > a:nth-child(5)')
print(element)

# 6.根据link_text查找,里面为文字
element = browser.find_element_by_link_text('京东秒杀')
print(element)

element = browser.find_elements(By.LINK_TEXT, '京东秒杀')
print(element)

自动化代码实战

# -------------------------自动化操作实战-------------------------------
from selenium import webdriver
from selenium.webdriver.chrome.webdriver import Service
from selenium.webdriver.common.by import By
import time

path = 'D:\Google\Chrome\Application\chromedriver.exe'

service = Service(path)
browser = webdriver.Chrome(service=service)
# 打开网页
url = 'https://www.jd.com/'
browser.get(url)

# 停顿一秒
time.sleep(1)
# 找到输入框
shuru = browser.find_element(By.ID, 'key')
# 输入华为手机
shuru.send_keys('华为手机')

time.sleep(1)
# 找到搜素按钮
button1 = browser.find_element(By.CLASS_NAME, 'button')
# 点击按钮
button1.click()

time.sleep(2)
# 滑倒底部
page_bottom = 'document.documentElement.scrollTop=10000'
# 执行
browser.execute_script(page_bottom)

time.sleep(2)
# 找到下一页的位置,复制xpath路径
next_page = browser.find_element(By.XPATH, '//*[@id="J_bottomPage"]/span[1]/a[9]')
next_page.click()

time.sleep(3)
# 找一个手机图片
button2 = browser.find_element(By.TAG_NAME, 'img')
button2.click()

time.sleep(3)
# 返回上一页
browser.back()
# 回到上一页
time.sleep(2)
browser.forward()
# 退出网页
time.sleep(2)
browser.quit()

# ---------------------------------------------------------

运行效果如下:

Selenium自动化代码实战运行视频

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值