python爬虫(selenium)

这篇具有很好参考价值的文章主要介绍了python爬虫(selenium)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

准备

体验示例

创建浏览器驱动对象

访问页面

查找节点

节点交互

切换Frame

延时等待

前进和后退

Cookies

选项卡管理


准备

(1)浏览器驱动:http://chromedriver.storage.googleapis.com/index.html
(2)selenium第三方库:pip install selenium


注意:浏览器驱动需要根据自身浏览器版本去下载兼容版本,可以把谷歌的自动更新服务禁用了,以免自动更新

体验示例

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome("./chromedriver.exe")

try:
    driver.get("https://www.baidu.com")

    input = driver.find_element(by=By.ID, value="kw")
    input.send_keys('Python')
    input.send_keys(Keys.ENTER)

    wait = WebDriverWait(driver, 10)
    res = wait.until(EC.presence_of_element_located((By.ID, 'content_left')))

    print(driver.current_url)
    print(driver.get_cookies())
    print(driver.page_source)

except Exception as e:
    print(e)

finally:
    driver.close()

创建浏览器驱动对象

创建浏览器对象返回selenium.webdriver.chrome.webdriver.WebDriver类型实例对象。
driver = webdriver.Chrome()
driver = webdriver.Firefox()
driver = webdriver.Edge()
driver = webdriver.Safari()

访问页面

# 访问页面

driver.get(url)

# 获取网页源码
html = driver.page_source

# 关闭浏览器
driver.close()

查找节点

(1) 以下为WebDriver实例对象相关方法:
    find_element(by,value):查找单个元素节点,返回WebElement对象。
    find_elements(by,value):查找多个元素节点,返回WebElement对象列表。
    上面中的by即selenium.webdriver.common.by.By.*,value即相对于by的参数值。


    
(2) 以下为by参数的可选值:
    By.ID:通过id定位标签元素
    By.CLASSNAME:通过类名定位标签元素
    By.TAG_NAME:通过标签名称定位标签元素
    By.NAME:通过name属性定位标签元素
    By.CSS_SELECTOR:通过css选择器定位标签元素
    By.XPATH:通过xpath表达式定位标签元素
    By.LINK_TEXT:通过链接标签文本定位标签元素
    By.PARTIAL_LINK_TEXT:通过部分匹配链接文本定位元素

节点交互

(1) 以下为前言:
    节点交互毫无疑问用于节点元素对象的相关操作方法,节点对象的具体实现类selenium.webdriver.remote.webelement.WebElement,下面的方法也是该实例的相关方法。
    


(2) 以下为相关WebElement实例方法和属性
    text:获取元素文本,返回str类型。
    tag_name:获取元素的标签名称,返回str类型。
    parent:获取元素的父节点,返回WebElement类型。
    find_element(by,value):在当前元素查找子元素标签,返回WebElement类型。
    get_attribute(name):获取元素指定属性的属性值,返回str类型。
    send_keys(*value):输入文本,参数value可以是字符串、列表、元组等可迭代对象。
    clear():清空文本。
    click():模拟点击,可以点击按钮、链接等。
    submit():提交表单。
    screenshot(filename):截图当前元素,filename为保存的文件名。
    screenshot_as_base64:截图当前元素以base64编码数据形式返回。
    screenshot_as_png:截图当前元素以二进制编码数据形式返回。
    value_of_css_property(name):获取指定css属性的属性值,返回str类型。
    location_once_scrolled_into_view:将元素滚动到可见区域。
    is_displayed():判断元素是否可见,返回bool类型。
    is_enabled():判断元素是否可用,返回bool类型。
    is_selected():判断元素是否被选中,返回bool类型。
    location:获取元素的坐标位置,返回字典,包含x、y。
    size:获取元素的尺寸值,返回dict类型,包含width、height。
    rect:获取元素的坐标位置和尺寸值,返回dict类型,包含x、y、width、height。
    shadow_root:获取隐藏DOM的根节点元素。

切换Frame

(1) 以下为相关方法:
    注意,以下方法皆为webdriver.WebDriver示例对象的方法。
    switch_to.frame(frame_reference):切换到子frame中,这个frame_reference可以是索引、id、name、元素对象这些可选值。
    switch_to.parent_frame():切换到父frame中


    
(2) 以下为代码示例:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome("./chromedriver.exe")
driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-draggable")
driver.switch_to.frame('iframeResult')  # 这个iframeResult为id值

try:
    logo = driver.find_element(by=By.CLASS_NAME, value='logo')
except:
    print('not find')
driver.switch_to.parent_frame()
logo = driver.find_element(by=By.CLASS_NAME, value='logo')
print(logo)

driver.close()	

延时等待

(1) 以下为介绍:
        延时等待是指等待页面加载完毕之后再去定位元素。延时等待分为两种:隐式等待、显式等待。方便理解可以分别称为:全局等待、局部等待。
        隐式等待,可以称为全局等待,通过Webdriver对象来设置,设置后所有的元素定位操作将都会受到这个全局等待的作用,也就是说全局上为每个元素定位操作设置了一个相同时间的等待延迟。优点是避免了为每个元素定位操作去编写等待延迟的代码,减少了代码量。缺点是每个元素都设置了相同的等待延迟,将会可能存在效率成本在不同程度上的浪费。
        显示等待,可以称为局部等待,通过为某个元素定位来设置等待延迟,设置后仅作用于当前元素。优点是仅为可能需要进行延迟等待的元素来设置延迟等待,避免了全局上设置造成的时间成本浪费。缺点是加大了代码量,在多个需要去设置延迟等待的元素时,需要依次为他们分别编写延迟等待代码。

(2) 以下为相关方法:
        全局等待是作用于WebDriver对象的,写起来很简单。局部等待相对写起来较为复杂,需要导入selenium.webdriver.support.ui.WebDriverWait、selenium.webdriver.support.expected_conditions(EC)、selenium.webdriver.common.by.By。
        全局等待:
        driver.implicitly_wait(sec)
        局部等待:
        wait = WebDriverWait(driver,sec)
        eleement1 = wait.until(EC.presence_of_element_located((by,value)))
        eleement2 = wait.until(EC.presence_of_element_located((by,value)))
        eleement1和eleement2的最大等待延迟将分别都是wait实例对象中的sec时间长度。
        
(3) 以下为示例代码:

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

driver = webdriver.Chrome("./chromedriver.exe")
driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-draggable")

wait = WebDriverWait(driver, 3)
logo = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'logo')))
card = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'card')))
print(111, logo)
print(222, card)

driver.close()

前进和后退

(1) 以下为相关方法:
    driver.back():后退
    driver.forward():前进

(2) 以下为示例代码:

from selenium import webdriver

driver = webdriver.Chrome("./chromedriver.exe")

driver.get("https://www.baidu.com")
driver.get("https://www.taobao.com")
driver.get("https://www.dangdang.com")

driver.back()
time.sleep(2)
driver.forward()

driver.close()

Cookies

driver.get_cookie(name):获取指定cookie
driver.get_cookies():获取所有cookie
dirver.add_cookie(dict):添加或修改cookie
driver.delete_cookie(name):删除指定cookie
driver.delete_all_cookies():删除所有cookie

选项卡管理

(1) 以下为相关方法:
    driver.execute_script('window.open()'):创建新选项卡。
    driver.window_handles:获取所有选项卡列表。
    dirver.switch_to.window(driver.window_handles[index]):切换到指定索引的选项卡。
    


(2) 以下为示例代码:文章来源地址https://www.toymoban.com/news/detail-435659.html

from selenium import webdriver

driver = webdriver.Chrome("./chromedriver.exe")

driver.get("https://www.baidu.com")
# 创建一个新选项卡
driver.execute_script('window.open()')
print(driver.window_handles)

# 切换到新选项卡并访问淘宝网
driver.switch_to.window(driver.window_handles[1])   
driver.get('https://www.taobao.com')
time.sleep(1)

# 再切换回百度所在选项卡
driver.switch_to.window(driver.window_handles[0])
time.sleep(5)

driver.close()

到了这里,关于python爬虫(selenium)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 爬虫入门示例

    爬取接口示例,这里以 Get 请求为例,这里请求的接口会返回一个 JSON 字符串。 若接口返回的是 json 字符串,也可以像下面这样,直接使用 result.json() 接收接口返回的数据为字典。 上面的示例是发送一个请求,该请求返回的一个json字符串。有时候我们是想获取某个网址链接

    2024年02月11日
    浏览(33)
  • 快速上手Python爬虫:网络爬虫基础介绍及示例代码

    网络爬虫,又称为 Web 爬虫、网络蜘蛛、网络机器人,在英文中被称为 web crawler,是一种自动化程序,能够在互联网上自动获取数据、抓取信息,并将其存储在本地或远程数据库中。它可以帮助我们自动化处理大量数据,提高工作效率,更好地利用互联网资源。 现代互联网上

    2024年02月09日
    浏览(41)
  • Python爬虫之用Selenium做爬虫

    我们在用python做爬虫的时候,除了直接用requests的架构,还有Scrapy、Selenium等方式可以使用,那么今天我们就来聊一聊使用Selenium如何实现爬虫。 Selenium是什么? Selenium是一个浏览器自动化测试框架,是一款用于Web应用程序测试的工具。框架底层使用JavaScript模拟真实用户对浏览

    2024年02月13日
    浏览(38)
  • python爬虫之人人网模拟登陆示例详解

    人人网是中国大陆较早起的社交网站之一,拥有大量的用户。由于随机访问人人网个人主页需要登陆,因此需要使用模拟登陆技术来实现数据的爬取。本文将就人人网的模拟登陆实例进行详细剖析。 获取登陆页面信息 模拟登陆首先需要获取人人网的登陆页面信息,也就是登

    2024年02月07日
    浏览(40)
  • Python爬虫基础之Selenium详解_python selenium

    from selenium import webdriver from selenium.webdriver.common.by import By browser= webdriver.Chrome() url = ‘https://www.baidu.com’ browser.get(url) button = browser.find_element(By.ID, ‘su’) print(button) button = browser.find_element(By.NAME, ‘wd’) print(button) button = browser.find_element(By.XPATH, ‘//input[@id=“su”]’) print(button)

    2024年04月15日
    浏览(53)
  • python爬虫之redis安装及使用示例

    Redis是一个开源的、内存中的数据结构存储,用于缓存、消息队列和会话存储等。Redis的数据结构非常强大,例如支持Hash、String、Set和List等数据类型,而且能够使用Lua脚本进行批量操作,因此在Python爬虫工具中被广泛应用。在本文中,我们将向您介绍Redis在Python爬虫中的运用

    2024年02月08日
    浏览(36)
  • 【Python爬虫与数据分析】爬虫selenium工具

    目录 一、selenium工具安装 二、selenium打开浏览器测试 三、无头浏览器 四、元素定位 五、页面滑动 六、按键、填写登录表单 七、页面切换 八、实战爬取当当网书籍数据 Selenium是Web的自动化测试工具,为网站自动化测试而开发,Selenium可以直接运行在浏览器上,它支持所有主

    2024年02月15日
    浏览(50)
  • python spider 爬虫 之 Selenium 系列 (-) Selenium

    京东的 seckill 秒杀 专区 用 urllib 是获取不到的 回顾一下urllib 爬虫 Selenium Selenium定义 Selenium是一个用于Web应用程序测试的工具 Selenium测试 直接 运行在浏览器中,就像真实的用户在操作一样 支持通过各种driver ( FireFoxDriver, InternetExplorerDriver、OperaDriver、ChromeDriver)驱动真实浏

    2024年02月16日
    浏览(37)
  • python 配置 selenium爬虫

    这两天学习Python爬虫,记录一下这个折磨我一两个小时的配置。 值得注意的是,下载的chromedriver.exe文件必须放在和运行的.py文件同一目录下,否则就会报错: selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. Please see https://chromedriver.chromium.or

    2024年02月03日
    浏览(40)
  • python爬虫——selenium

    目录 一、背景​编辑 1.1、selenium的发展 1.2、在爬虫中的应用 1.3selenium执行原理图 1.4、WebDriver,与WebElement 二、准备​编辑 2.1、下载驱动 2.2、安装Selenium库 2.3、简单使用 三、实用操作​编辑 3.1、查找节点 3.1.1、查找元素在网页中的位置(网址为www.baidu.com,代码中的注释很详

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包