【爬虫教程】动态页面抓取04

目录

 

4.1Charles数据抓取工具

4.2Selenium自动化工具

4.2.1基础入门

4.2.2Selenium使用

4.2.2.1浏览器对象操作

4.2.2.2标签对象的操作

4.2.2.3窗口对象操作

4.2.2.4Js操作

4.2.2.3三种等待方式


4.1Charles数据抓取工具

Charles使用指南

4.2Selenium自动化工具

4.2.1基础入门

4.2.2Selenium使用

4.2.2.1浏览器对象操作

import time
from selenium import webdriver
url='http://www.qq.com/'
chrome=webdriver.Chrome()  # 创建浏览器对象
chrome.maximize_window()  # 浏览器最大化
chrome.get(url)  # 打开该url对应的页面
time.sleep(3)  # 等待3s等待页面的加载
chrome.page_source  # 获取该url对应的页面源码
chrome.save_screenshot('./qq.png')  #对打开的页面截图并保存
chrome.close()  # 关闭当前页面
chrome.quit()  # 退出当前页面
chrome.back()  # 回退
chrome.forward()  # 前进

4.2.2.2标签对象的操作

导包:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

获取标签元素

  • chrome.find_element_by_id('su').click()  # 通过id获取标签元素
  • chrome.find_element_by_class_name('bg s_btn').click()  # 通过类名获取元素
  • chrome.find_element_by_xpath('')  # 通过xpath获取元素
  • chrome.find_elements_by_tag_name('')  # 通过标签名获取元素
  • chrome.find_element_by_css_selector('')  # 通过选择器获取元素
  • chrome.find_element_by_link_text('')  # 通过文本获取
  • chrome.find_element(By.ID,'')  # 自定义方式获取元素

点击事件

# 方式一
from selenium.webdriver.common.keys import Keys
chrome.find_element_by_id('su').send_keys(Keys.ENTER)

# 方式二
chrome.find_element_by_id('su').click()  # 通过id获取标签元素

发送消息事件

from selenium.webdriver.common.by import By
chrome.find_element(By.ID,'kw').send_keys('google')

4.2.2.3窗口对象操作

窗口之间的切换

  • windows=chrome.window_handles  # 获取窗口列表
  • current_window=chrome.current_window_handle  # 获取当前窗口
  • chrome._switch_to.window(windows[1])  # 跳转到windows[1]这个窗口
  • iframe=driver.find_element_by_xpath('//div[@class="login"]/iframe')  # 获取框架窗口标签对象
  • driver._switch_to.frame(iframe)    # 跳转到该框架内部

窗口对象设置

from selenium.webdriver import ChromeOptions
url = 'http://news.mtime.com/2019/10/31/1598542.html'
options=ChromeOptions()  # 选项
options.add_argument('--mute-audio')  # 关闭媒体的声音
chrome=webdriver.Chrome(executable_path='驱动的路径',options=options)  # 创建浏览器对象,指定驱动位置,指定执行的选项
chrome.set_window_size(500,500)  # 设置窗口的大小
chrome.set_window_position(0,0,'父窗口') # 设置窗口的位置

4.2.2.4Js操作

滚动条操作

js1 = 'document.documentElement.scrollTop=10000'
js2 = 'window.scrollTo(0,document.body.scrollHeight)'
js3 = 'window.scrollTo(0,200)'
chrome.execute_script(js1)
  • img = chrome.find_element_by_class_name('index-logo-src')  # 获取标签对象
  • chrome.execute_script('$(arguments[0]).fadeOut()',img)  # 使用弹出效果影藏被选对象(对某个对象要执行的操作,对象)
  • chrome.execute_script("var q = document.getElementById(\"kw\");""q.style.border=\"2px solid red\";")

4.2.2.3三种等待方式

  • time.sleep(3)  # 等待3s等待页面的加载
  • chrome.implicitly_wait(10)  # 隐性等待,就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部断的刷新页面去寻找我们需要的元素
  • kw=WebDriverWait(chrome,10,0.5).until(EC.presence_of_element_located((By.ID,'su')))显示等待,明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么学爬虫?】        1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!        2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是:网络请求:模拟浏览器的行为从网上抓取数据。数据解析:将请求下来的数据进行过滤,提取我们想要的数据。数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是:爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求!【课程服务】 专属付费社群+定期答疑

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值