Python与Selenium库(含爬虫实战例子)

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

Python与Selenium库

简介

Selenium是一个自动化测试工具,利用它可以驱动浏览器模拟用户在页面上的操作,例如:点击,输入,选择等行为,使我们可以通过编写Python脚本来进行web页面的自动化测试。

安装Selenium

Selenium包含三个部分:Selenium IDE、Selenium Grid和Selenium WebDriver,其中,Selenium WebDriver是我们所需要用到的,因为它可以驱动各种浏览器进行页面的自动化测试。

Selenium WebDriver包含多个浏览器驱动程序,比如:ChromeDriver、FireFoxDriver等,这些驱动程序可以根据个人需求进行选择,默认情况下,Selenium WebDriver的驱动程序不包含在Java或Python库中,因此我们需要先从如下地址下载对应的ChromeDriver(以Chrome浏览器为例)。

下载地址:

https://sites.google.com/a/chromium.org/chromedriver/downloads

选择与浏览器对应的版本进行下载,下载后将chromedriver.exe文件放到Python的路径中,例如放入Python36\Scripts文件夹下(如果是其他浏览器,则下载对应驱动进行使用)。

安装Selenium

pip install selenium

使用Selenium

下面我们将学习如何使用Selenium来进行web页面自动化测试。

打开浏览器

使用webdriver的类方法启动所需浏览器。

打开Chrome浏览器:

from selenium import webdriver

driver = webdriver.Chrome()

访问网站

使用get方法访问所需的网站。

driver.get("http://www.baidu.com")

查找元素

根据元素的id、name、class等属性定位元素,使用webdriver的find_element_by_*方法查找,返回一个WebElement对象。

from selenium.webdriver.common.by import By

element = driver.find_element(By.TAG_NAME, "input")

操作元素

可以对找到的元素进行不同的操作,例如:输入文本、点击、选择等行为。

input_element = driver.find_element(By.NAME, "wd")
input_element.send_keys("Selenium")
# 提交搜索
submit_element = driver.find_element(By.ID, "su")
submit_element.click()

等待

在访问某些网站时,网站可能需要一些时间来加载页面或元素,此时我们可以使用Selenium提供的等待机制,以确保所需元素的出现和交互行为的完成。

Selenium提供了两种等待方式:

  • 隐式等待(Implicit Wait):如果找到元素不存在,等待一定时间后抛出异常,使用方法driver.implicitly_wait(seconds);
  • 显式等待(Explit Wait):在给定的时间内等待指定的条件出现,可以自定义等待的条件,等待超时后抛出异常,使用方法WebDriverWait(driver, timeout, poll_frequency=500, ignored_exceptions=None).until(expected_conditions.条件)。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素出现
try:
    # 显式等待
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "content_left")))
    # 隐式等待
    # driver.implicitly_wait(10)
except Exception:
    print("元素未找到")

关闭浏览器

在自动测试过程中,需要在最后关闭浏览器。

driver.quit()

示例代码

下面是一个完整的示例代码。该代码实现了打开百度首页,输入文本,点击搜索按钮,等待结果出现并打印第一条搜索结果的标题。

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

# 启动浏览器
driver = webdriver.Chrome()

# 访问网站
driver.get("http://www.baidu.com")

# 输入搜索文本
input_element = driver.find_element(By.NAME, "wd")
input_element.send_keys("Selenium")

# 点击搜索
submit_element = driver.find_element(By.ID, "su")
submit_element.click()

# 显式等待
try:
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "content_left")))
except Exception:
    print("元素未找到")

# 查找元素
result_element = driver.find_element(By.CSS_SELECTOR, "#content_left div.c-container h3.t a")

# 打印第一条搜索结果的标题
print(result_element.text)

# 关闭浏览器
driver.quit()

总结

通过Python与Selenium的结合,我们可以进行网站自动化测试,实现自动化输入、点击、选择等行为,以及对搜索结果进行定位和获取等操作,从而提高测试效率和可靠性,也可以应用于爬虫程序中。

爬虫实战

批量获取bing图片搜索引擎中的欧美头像

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Safari()#选择驱动selenium和python的关系,python,爬虫,selenium

driver.get("https://www.bing.com/images")

# 找到搜索框并输入关键字
search_box = driver.find_element(By.NAME,"q")
search_box.send_keys("欧美头像")
search_box.send_keys(Keys.RETURN)

# 等待页面加载完成
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "mmComponent_images_1")))

# 模拟下拉到底部的操作,让更多的图片显示出来
SCROLL_PAUSE_TIME = 1
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(SCROLL_PAUSE_TIME)
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

# 找到所有图片的元素
images = driver.find_elements(By.XPATH,"//img[contains(@class,'mimg')]")
urls = []
for image in images:
    # 仅保留纵横比为1:1的图片
    width = int(image.get_attribute("width"))
    height = int(image.get_attribute("height"))
    if width == height:
        url = image.get_attribute("src")
        urls.append(url)

# 输出图片url


# 关闭浏览器
driver.quit()

import urllib.request

# 保存图片到本地
for i, url in enumerate(urls):
    urllib.request.urlretrieve(url, f"image_{i}.jpg")

selenium和python的关系,python,爬虫,selenium文章来源地址https://www.toymoban.com/news/detail-787871.html

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

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

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

相关文章

  • 〖Python网络爬虫实战㉚〗- Selenium节点

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                 python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2024年02月13日
    浏览(24)
  • (十四)python网络爬虫(理论+实战)——爬虫利器selenium详解

    目录 6 selenium的介绍和使用      6.1 爬虫遇到的难点

    2023年04月08日
    浏览(19)
  • 〖Python网络爬虫实战㉛〗- Selenium 的其他操作使用

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                 python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2024年02月16日
    浏览(18)
  • Python爬虫之selenium深入解读【从入门到实战】

    在爬虫中占据比较重要的地位 是一种浏览器自动化的工具,所谓的自动化是指,我们可以通过代码的形式制定一系列的行为动作,然后执行代码,这些动作就会同步触发在浏览器中。 我们在抓取一些普通网页的时候requests基本上是可以满足的. 但是, 如果遇到一些特殊的网站

    2024年01月22日
    浏览(19)
  • python爬虫实战 scrapy+selenium爬取动态网页

    最近学习了scrapy爬虫框架,想要找个目标练练手。由于现在很多网页都是动态的,因此还需要配合selenium爬取。本文旨在记录这次学习经历,如有疑问或不当之处,可以在评论区指出,一起学习。 对scrapy不了解的同学可以阅读这篇文章 爬虫框架 Scrapy 详解,对scrapy框架介绍的

    2024年02月07日
    浏览(51)
  • Python爬虫实战之爬淘宝商品--selenium+Xpath

    代码链接 利用selenium来自动翻页爬取淘宝商品的标题,价格,销量,产地信息。 导入库: 注意自己配置好python环境(谷歌驱动…) 利用selenium,手动登录获取cookie保存在本地用于登录平台(便于测试代码),访问商品页url通过Xpath选中对象拿数据,翻页,通过Xpath选中对象拿数据,翻页

    2024年02月04日
    浏览(28)
  • Python爬虫实战:selenium爬取电商平台商品数据(1)

    def index_page(page): “”\\\" 抓取索引页 :param page: 页码 “”\\\" print(‘正在爬取第’, str(page), ‘页数据’) try: url = ‘https://search.jd.com/Search?keyword=iPhoneev=exbrand_Apple’ driver.get(url) if page 1: input = driver.find_element_by_xpath(‘//*[@id=“J_bottomPage”]/span[2]/input’) button = driver.find_element_by_xpath(‘

    2024年04月28日
    浏览(22)
  • Python爬虫实战——Lazada商品数据(selenium自动化爬虫,xpath定位)

            在此说明,这个项目是我第一次真正去爬的一个网站,里面写的代码我自己都看不下去,但是已经不想花时间去重构了,所以看个乐呵就好,要喷也可以(下手轻一点)。这篇文算是记录我的学习中出现的一些问题,不建议拿来学习和真拿我的代码去爬Lazada的数据,

    2024年02月02日
    浏览(32)
  • 爬虫实战(一)Python+selenium自动化获取数据存储到Mysql中

      行话说得好,“爬虫学得好,牢饭吃到饱!”哈哈博主是因这句话入的坑,不为别的就为邀大家一起铁窗泪(bushi),本人虽小牛一只,但是喜爱捣鼓技术,有兴趣的小伙伴们可以共同探讨,也欢迎各位大佬们的指点,愿共同进步!   这次计划是翻墙爬取外网某网站

    2024年01月17日
    浏览(27)
  • 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日
    浏览(22)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包