Python网页抓取- python selenium使用方法和代码示例

这篇具有很好参考价值的文章主要介绍了Python网页抓取- python selenium使用方法和代码示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Selenium可以模拟网页操作,抓取页面内容,主要通过webdriver模块实现,为了方便理解,按照实例的操作步骤逐一介绍(函数参数不具体展开,参考下面代码实例即可理解):

  1. 获取browser实例

通过webdriver.Chorme(), webdriver.Edge(), webdriver.Firefox(), 来获取browser实例:

browser = webdriver.Chrome()

获取之前可以设置参数,比如是否程序结束后自动关闭浏览器,浏览器窗口最大化:

options.add_experimental_option('detach', True) #不自动关闭浏览器

options.add_argument('--start-maximized') #浏览器窗口最大化

  1. 获取网页

通过browser实例来获取网页内容:

browser.get('https://www.baidu.com')

  1. 获取目标元素

通过webdriver的find_element(by, keyword),find_elements(by, keyword)来获取网页包含的目标元素webelement:

input = browser.find_element(By.ID,'order_id')

  1. 操作目标元素

通过webelement的函数和属性对目标元素进行操作,比如在输入框内输入文本:

input.send_keys("目标文本")

webelement对象是selenium中所有元素的父类,也就是webelement对象拥有的方法,其它元素对象都会有,某些方法只是针对特定元素类型有效,而对其它类型无效。以下为一些主要的方法:

(1)、clear:清空文本框中的文本,仅仅对有文本输入特性的元素有效;例如:文本框、多行文本框等;

(2)、click:单击元素,可以通过该方法,让元素获取焦点,点击的是该元素的中心位置;

(3)、find_element系列,有如下查找方式:

  • By.ID = "id"

  • By.XPATH = "xpath"

  • By.LINK_TEXT = "link text"

  • By.PARTIAL_LINK_TEXT = "partial link text"

  • By.NAME = "name"

  • By.TAG_NAME = "tag name"

  • By.CLASS_NAME = "class name"

  • By.CSS_SELECTOR = "css selector"

(4)、get_attribute:获取当前元素的特定属性值,如 name、style等;

(5)、id:表示当前元素在selenium中的唯一标识;

(6)、is_displayed:当前元素是否可见;

(7)、is_enabled:当前元素是否可用;

(8)、is_selected:当前元素是否被选中,通常在checkbox、radiobox、select option等元素上;

(9)、location:返回当前元素的左上角坐标X、Y的位置,即在当前页面中的绝对位置坐标;

(10)、location_once_scrolled_into_view:返回当前元素第一次滚动到可视区域时的左上角坐标X、Y的位置,使用此方法可以把不在可视区域的元素滚动到可视区域;

(11)、parent:返回WebDriver对象;

(12)、rect:返回当前元素左上角坐标X、Y值,以及该元素的宽和高,即该元素的显示区域;

(13)、send_keys:向当前元素发送字符串内容,仅仅对可输入web元素有效,如文本框、文本区域等;

a. 常用的非组合键类型:

  • 回车键:Keys.ENTER

  • 删除键:Keys.BACK_SPACE

  • 空格键:Keys.SPACE

  • 制表键:Keys.TAB

  • 回退键:Keys.ESCAPE

  • 刷新键:Keys.F5

b. 常用的组合键类型:

  • 全选:send_keys(Keys.CONTROL,'a')

  • 复制:send_keys(Keys.CONTROL,'c')

  • 粘贴:send_keys(Keys.CONTROL,'v')

  • 剪切:send_keys(Keys.CONTROL,'x')

(14)、size:获取当前元素的宽和高;

(15)、submit:提交当前元素所在的form表单,相当于单击所在form表单内的submit;

(16)、tag_name:获取当前元素的tag name内容,如文本框的值为input;

(17)、text:获取当前元素的inneerText值,即元素开始标签和结束标签之间的文本内容;

(18)、value_of_css_property:获取当前元素的css属性,如获取color的属性值;

  1. 等待网页事件

在操作元素之后,等待网页的执行和返回结果,通过WebDriverWait函数实现。

比如让浏览器等待10s,直到id为error_msg的元素显示,并获取error_msg的文本,如果超时则抛出异常:

wait = WebDriverWait(browser,10)

wait.until(EC.visibility_of_element_located((By.ID,'error_msg')))

msg = browser.find_element(By.ID,'error_msg').text

主要的网页事件有以下这些:

  • presence_of_all_elements_located()类:期望检查是否存在至少一个元素在网页上。返回WebElements列表

  • visibility_of_any_elements_located()类:期望检查至少有一个元素是可见的在网页上。返回WebElements列表

  • visibility_of_all_elements_located()类:期望检查所有元素是否存在于a的DOM上页面和可见。用于查找元素一旦找到并可见,就会返回WebElements列表

  • text_to_be_present_in_element()类:期望检查给定文本是否存在于指定的元素。

  • text_to_be_present_in_element_value()类:期望检查元素中是否存在给定文本定位器,文本

  • invisibility_of_element_located()类:用于检查元素是否不可见的期望出现在DOM上。

  • invisibility_of_element()类:检查元素是否不可见的期望出现在DOM上。

  • element_to_be_clickable()类:检查元素的期望是可见的并且已启用你可以点击它

  • staleness_of()类:等到元素不再附加到DOM。element是要等待的元素。如果元素仍附加到DOM,则返回False,否则返回true。

  • element_to_be_selected()类:选择检查选择的期望。element是WebElement对象

  • element_located_to_be_selected()类:选择对元素的期望。locator是(by,path)的元组

  • alert_is_present()类:检查是否出现alter面板

以下为完整python实例代码,实现如下功能:

(1)打开网页

(2)在百度中搜索python

(3)提取第一页所有搜索结果链接,并在浏览器中自动打开前3个

import pyperclip, webbrowser, pprint
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

options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True)  #不自动关闭浏览器
options.add_argument('--start-maximized') #浏览器窗口最大化
browser = webdriver.Chrome(options=options)
try:
    browser.get('https://www.baidu.com')
    input = browser.find_element(By.ID,'kw')
    input.send_keys('Python')
    input.send_keys(Keys.ENTER)
    wait = WebDriverWait(browser,10)
    wait.until(EC.presence_of_element_located((By.ID,'content_left')))
    print(browser.current_url)
    #print(browser.get_cookies())
    pyperclip.copy(browser.page_source)
    items = browser.find_elements('tag name', 'h3')
    #方法1:直接用element的click方法,最简单
    for i in items[:3]:
        i.find_element('tag name', 'a').click() 
    #方法2:获取链接的href再打开,较复杂
    """
    links = []
    for i in items:
        item = {}
        item['text'] = i.text
        item['href'] = i.find_element('tag name', 'a').get_attribute('href')
        links.append(item)
    #pprint.pprint(links)  
    for url in links[:3]:
        webbrowser.open(url['href'])
    """
finally:
    #browser.close()
    print("program end")

相关阅读:

python excel实操之表格转置

python excel实操之99乘法表文章来源地址https://www.toymoban.com/news/detail-816505.html

到了这里,关于Python网页抓取- python selenium使用方法和代码示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python Selenium 的基本使用方法

    Selenium 是一个用于自动化 web 浏览器的工具,它提供了一套用于测试 web 应用程序的工具和库。Selenium 最初是用于测试 web 应用程序的,但它也被广泛用于进行网络数据采集、自动化任务和网页操作等。 Selenium 支持多种编程语言,包括 Python、Java、JavaScript、C# 等,但最为常用的

    2024年04月28日
    浏览(8)
  • 【Python爬虫】selenium的详细使用方法

    【Python爬虫】selenium的详细使用方法

    selenium是一个用于web应用测试的工具,selenium所做的测试会直接运行在浏览器中,就像真人进行操作一样,像是打开浏览器,输入账号密码登录等等。目前selenium支持大部分的浏览器,例如:IE,Mozilla Firefox,Safari,Google Chrome,Opera,Edge等等浏览器,selenium是一个相当成功的开

    2024年02月07日
    浏览(5)
  • 关于Python中使用selenium八大定位方法

    1.通过id元素定位                             .find_element_by_id(\\\"id\\\") 2.通过name元素定位                       .find_element_by_name(\\\"name\\\")     3.通过路径导航定位                         .find_element_by_xpath(\\\"xpath\\\")          说明 :右键所选的网页元素,点击copy,点击copy ,x

    2023年04月23日
    浏览(9)
  • 【Python_Selenium学习笔记(一)】Selenium介绍及基本使用方法

    【Python_Selenium学习笔记(一)】Selenium介绍及基本使用方法

    Selenium是一套 Web 网站的程序自动化操作解决方案,广泛应用于自动化测试及爬虫。此篇文章主要介绍 Selenium 的 安装和基本使用流程。 Selenium 框架的安装主要就是安装两样东西: Selenium 客户端库 和 浏览器驱动 。 1.1、Selenium 框架安装 使用 pip 命令安装 pip install selenium ,安装

    2023年04月13日
    浏览(5)
  • C#使用Selenium WebDriver模拟人工操作网页方法

    目录 1.Selenium WebDriver使用方法 2.Selenium WebDriver安装方法 1.Selenium WebDriver使用方法 在C#中模拟人工操作网页通常需要使用Web自动化工具或库来实现。一种常用的方式是使用Selenium WebDriver,它是一个用于自动化Web浏览器操作的工具,支持多种浏览器,包括Chrome、Firefox、Edge等。以

    2024年02月06日
    浏览(7)
  • 使用Selenium对网页元素进行定位的诸种方法!

    使用Selenium对网页元素进行定位的诸种方法!

    使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接。 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了,下面我们来了解一下如何在查找元素。 在上一篇的示例中,我们就演示了如何通过find_element_by_

    2024年04月10日
    浏览(5)
  • 解决Pycharm使用 selenium 打开网页后闪退的方法

    用pycharm运行模拟登录QQ邮箱打开chrome浏览器后,浏览器自动退出。代码如下 pycharm版本:2021.3 python版本:3.10 1、我首先检查Chrome浏览器驱动与浏览器版本是否匹配,检查后发现完全匹配  ,这里我排除了驱动的问题 2,接下来我又改用Edge浏览器与浏览器驱动,发现还是闪退,

    2024年02月06日
    浏览(39)
  • 【AI模型部署】基于gradio和python的网页交互界面(web-ui)——简易使用方法

    【AI模型部署】基于gradio和python的网页交互界面(web-ui)——简易使用方法

    使用gradio,只需在原有的代码中增加几行, 快速部署 机器学习模型,就能自动化生成 交互式web页面 ,并支持多种输入输出格式,比如图像分类中的图标签,超分辨率中的图图等。 同时还 支持生成能外部网络访问的链接 ,能够迅速让你的朋友,同事体验你的算法。 https://g

    2024年02月11日
    浏览(6)
  • selenium+python自动化测试之使用webdriver操作浏览器的方法

    selenium+python自动化测试之使用webdriver操作浏览器的方法

    WebDriver简介 selenium从2.0开始集成了webdriver的API,提供了更简单,更简洁的编程接口。selenium webdriver的目标是提供一个设计良好的面向对象的API,提供了更好的支持进行web-app测试。从这篇博客开始,将学习使用如何使用python调用webdriver框架对浏览器进行一系列的操作 打开浏览

    2024年01月25日
    浏览(10)
  • 爬虫入门指南(4): 使用Selenium和API爬取动态网页的最佳方法

    爬虫入门指南(4): 使用Selenium和API爬取动态网页的最佳方法

    随着互联网的发展,许多网站开始采用动态网页来呈现内容。与传统的静态网页不同,动态网页使用JavaScript等脚本技术来实现内容的动态加载和更新。这给网页爬取带来了一定的挑战,因为传统的爬虫工具往往只能获取静态网页的内容。本文将介绍如何使用Selenium和API来实现

    2024年02月11日
    浏览(11)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包