python爬虫--selenium的理解以及使用(六)

本文详细介绍了使用Python的Selenium库进行动态页面数据抓取、处理iframe、模拟登录以及使用无头浏览器规避检测的方法。通过实例展示了如何进行滑块验证码的自动化滑动,同时提供了关键代码片段。
摘要由CSDN通过智能技术生成

前言

  • 关于一个页面是否是动态加载(Aajax)数据的判断方法⭐⭐

动态加载数据意味着直接对网址进行请求是无法直接拿到页面数据的,我们可以通过网页上的抓包工具定位到network对网页进行请求,并查看网页上的某个数据是否在network请求页面加载的数据页中

  • 步骤详解
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

动态加载的数据是如何来的?

在这里插入图片描述
在这里插入图片描述


一、selenium简介

selenium模块和爬虫之间具有怎样的关联

  • 便捷的获取网站中动态加载的数据
  • 边界的实现模拟登录

什么是selenium模块?

  • 基于浏览器自动化的一个模块

selenium模块使用流程:

  • 环境安装:pip install selenium
  • 下载一个浏览器的驱动程序:用什么浏览器就下载什么浏览器驱动程序:谷歌驱动程序
    对于现在正在使用的google浏览器根据版本号寻找对应驱动程序即可。
  • 实例化一个浏览器对象
  • 编写基于浏览器自动化的操作代码:
  1. 发起请求:get(url)
  2. 标签定位:find系列方法
  3. 标签交互:send_keys(‘xxx’)
  4. 执行js程序:execte_script(‘jsCode’)
  5. 关闭浏览器:quit()

在这里插入图片描述

  • 使用selenium爬取药监总局的数据
from selenium import webdriver
from lxml import etree
from time import sleep

# 实例化一个浏览器对象(传入浏览器的驱动程序)
bro = webdriver.Chrome(executable_path='E:\Google\chromedriver')
# 让浏览器发起一个指定的url对应请求
bro.get('http://scxk.nmpa.gov.cn:81/xk/')

# 获取浏览器当前的页面源码数据
page_text = bro.page_source

# 解析企业名称
tree = etree.HTML(page_text)
li_list = tree.xpath('//ul[@id="gzlist"]/li') 
for li in li_list:
    name = li.xpath('./dl/@title')[0]
    print(name)

sleep(5)
# 关闭浏览器
bro.quit()

在这里插入图片描述

  • 使用selenium进行简单的自动化操作
from selenium import webdriver
from time import sleep

bro = webdriver.Chrome(executable_path=r'E:\Google\chromedriver')

bro.get('https://www.taobao.com/')

# 找到搜索框:标签定位
search_input = bro.find_element_by_id('q') # 返回所定位的标签
# 标签的交互
search_input.send_keys('Iphone')

# 执行一组js程序 :滚轮滚动一个屏幕的高度
bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
sleep(2)
# 点击搜索按钮  class = 'btn-search tb-bg'
btn = bro.find_element_by_css_selector('.btn-search')
# btn = bro.find_element_by_class_name('btn-search')
btn = bro.find_element_by_class_name('tb-bg')
btn.click()


bro.get('https://www.baidu.com')
sleep(2)
# 回退
bro.back()
sleep(2)
# 前进
bro.forward()

sleep(5)
bro.quit()

二、selenium处理iframe

  • 如果定位的标签是存在iframe标签之中的则必须使用switch_to.frame(id)
  • 动作链(拖动):from selenium.webdriver import ActionChains # 动作链
    • 实例化动作链对象:action = ActionChains(bro)
    • action.click_and_hold(div):长按并点击
    • move_by_offset(x,y):想要偏移的像素值
    • action.move_by_offset(17,yoffset=0).perform():让动作链立即执行
    • action.release()释放动作链对象
  • iframe

iframe就是我们常用的iframe标签:<iframe>。iframe标签是框架的一种形式,也比较常用到,iframe一般用来包含别的页面,例如我们可以在我们自己的网站页面加载别人网站或者本站其他页面的内容。
iframe标签的最大作用就是让页面变得美观。
iframe标签的用法有很多,主要区别在于对iframe标签定义的形式不同,例如定义iframe的长宽高。

  • 使用selenium实现如下操作
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

胜天半月子

打不打商的无所谓,能帮到你就好

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

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

打赏作者

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

抵扣说明:

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

余额充值