【Python】爬虫-----selenium入门操作Ⅰ

声明:本文章案例只用于学习不用于商业用途。

一、场景之一:

 

当我们查看一个页面的数据时,它返回的数据是加密后的效果,可以用selenium解决把程序与浏览器连接,让浏览器帮我们解读这段加密的数据。

二、安装selenium和浏览器驱动

使用selenium要安装selenium模块pip install selenium浏览器驱动,谷歌浏览器的安装网址:ChromeDriver Mirror

  • 浏览器驱动的安装方法:

1.查看自己的谷歌浏览器的版本号。

2. 选择相应的版本下载。

3.把下载解压好的chromedriver,复制到python解释器所在的文件夹里面。

4.我们可以运行下面这段代码,如果程序打开了谷歌浏览器并访问了我们设定的网页,那么我们就安装成功了。

from selenium.webdriver import Chrome
web = Chrome()
web.get("http://www.baidu.com")

三、selenium基本操作

1.打开拉钩网,并点击全国这个按钮

打开检查,选定“全国”这个按钮,复制它的xpath路径。

from selenium.webdriver import Chrome
web = Chrome()
web.get("https://www.lagou.com/")
el = web.find_element_by_xpath("/html/body/div[10]/div[1]/div[2]/div[2]/div[1]/div/p[1]/a") #找到元素
el.click() #点击事件
  •  find_element_by_xpath()和find_elements_by_xpath()的区别是前者只能定位路径中一个元素,后者能定位路径中多个元素。

 2.选择搜索框并输入python然后按回车

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import  Keys #导入按键类
web = Chrome()
web.get("https://www.lagou.com/")
el = web.find_element_by_xpath("/html/body/div[10]/div[1]/div[2]/div[2]/div[1]/div/p[1]/a") #找到元素
el.click() #点击事件
web.find_element_by_xpath('/html/body/div[7]/div[1]/div[1]/div[1]/form/input[1]').send_keys("python", Keys.ENTER)#回车

  3.拿到页面上的职位名和薪水

  先定位总表的xpath路径。然后再定位职位名和薪水的xpath路径。

import time
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import  Keys

web = Chrome()
web.get("https://www.lagou.com/")
el = web.find_element_by_xpath("/html/body/div[10]/div[1]/div[2]/div[2]/div[1]/div/p[1]/a") #找到元素
el.click() #点击事件
web.find_element_by_xpath('/html/body/div[7]/div[1]/div[1]/div[1]/form/input[1]').send_keys("python", Keys.ENTER)
time.sleep(1)

ul_li = web.find_elements_by_xpath('//*[@id="jobList"]/div[1]/div')#拿到页面里公司的招聘
for li in ul_li:
    job_name = li.find_element_by_xpath('./div[1]/div[1]/div[1]/a').text # 职位名
    job_salary = li.find_element_by_xpath('./div[1]/div[1]/div[2]/span').text#工资
    print(job_name,job_salary)

 


  4.seleniun切换浏览器的页面

当我们操作seleniun从第一个页面中打开了一个新的页面,浏览器的窗口会自动跳到新的页面,但是对于selenium来说可操作的范围还是在第一个页面里。那么我们需要输入切换‘视角’的代码:

web.switch_to.window(web.window_handles[-1]) #-1是最后一个窗口的意思,窗口顺序从0开始

 还有一种写法是切换为原页面:

web.switch_to.default_content()

当我们要关闭窗口时写:

web.close()

5.对iframe的处理

处理iframe,先拿到iframe然后切换视角到iframe,再然后拿数据。

iframe = web.find_element_by_xpath('//*[@id="player_iframe"]')
web.switch_to.frame(iframe) #把视角切换到iframe
tx = web.find_element_by_xpath('//*[@id = "main"]/h3[1]').text #在iframe里面找东西
print(tx)

6.对下拉框选项的处理和配置无头浏览器启动参数(无头就是不显示浏览器)

 选择标签有三个函数:

  • select_by_index():根据索引进行选择。
  • select_by_value():根据value值进行选择。
  • select_by_visible_text():根据选项文本进行选择。

下面的代码可以实现,选择选项框里的选项并抓取每次加载的数据:

import time
from selenium.webdriver import Chrome
from selenium.webdriver.support.select import  Select

web = Chrome() 
web.get("https://www.endata.com.cn/BoxOffice/BO/Global/global.html")

#定位到下拉列表
sel_el = web.find_element_by_xpath('//*[@id="OW_Week"]')
# 对元素进行包装,包装成下拉菜单
sel = Select(sel_el)

for i in range(len(sel.options)):  #i就是每个下拉框的索引位置
    sel.select_by_index(i)  #选择下拉框选项
    time.sleep(2)
    table = web.find_element_by_xpath('//*[@id="OW_Week_Table"]')
    print(table.text) #打印所有文本信息
    print("=============================================")
print("运行完毕")
web.close()

 

 

 配置浏览器启动参数:

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import  Options
opt = Options()
opt.add_argument("--headless") #设置无头
opt.add_argument("--disbale-gpu") # 不用GPU
web = Chrome(options=opt) #把参数设置到浏览器中

7.使用超级鹰🦅处理验证码

超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大

先登录超级鹰,然后生成一个软件ID,接着下载Python语言Demo。

 把下载好的py文件和测试的验证码图片放到要编译的文件夹里。

 打开刚刚复制的py文件按要求填写,运行就🆗了。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SamRol

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值