小工具知识网

当前位置: 首页 > 行业知识 > Python的selenium爬取

行业知识

Python的selenium爬取

2026-10-26 21:01:43 来源:互联网转载

1.selenium

1.1.前言

使用python的requests模块还是存在很大的局限性,例如:只发一次请求;针对ajax动态加载的网页则无法获取数据等等问题。特此,本章节将通过selenium模拟浏览器来完成更高级的爬虫抓取任务。

1.2.什么是selenium

Selenium是一个用于自动化Web应用程序测试的开源工具集。它提供了一组API和工具,可以与多种编程语言一起使用,如Java、Python、C#等,用于模拟用户在浏览器中的行为,如点击、填写表单、提交数据等。Selenium可以运行在各种浏览器上,包括Chrome、Firefox、Safari等,它还可以与多个测试框架和开发工具集成,如JUnit、TestNG、Maven等。

1.3.组成

Selenium的核心组件是WebDriver,它可以直接与浏览器进行交互,并模拟用户操作。WebDriver提供了一系列的方法和命令,可以控制浏览器的打开、页面导航、元素查找、交互操作等。使用Selenium,开发人员可以编写自动化测试脚本,以验证Web应用程序的功能和性能,并自动运行这些脚本进行回归测试。

除了WebDriver,Selenium还包含其他辅助工具,如Selenium IDE(集成开发环境)和Selenium Grid(分布式测试工具),它们提供了更多的功能和扩展性,以满足不同的测试需求。

总之,Selenium是一个功能强大的自动化测试工具,可用于模拟用户在浏览器中的行为,以及验证和测试Web应用程序的功能和性能。

1.4.特点

  • 开源、免费

  • 多浏览器支持:FireFox、Chrome、IE、Opera、Edge;

  • 多平台支持:Linux、Windows、MAC;

  • 多语言支持:Java、Python、Ruby、C#、JavaScript、C++;

  • 对Web页面有良好的支持;

  • 简单(API 简单)、灵活(用开发语言驱动);

  • 支持分布式测试用例执行。

    2.通过selenium模拟浏览器的抓取

    2.1.下载与导入

    点击 File -> Settings -> 选择项目:python12中的Python解析器,再点击 + 按钮,输入selenium,选择指定的版本,最后点击安装包(I)即可。

    注意:这里下载的selenium 4.0.0,不要下载高版本,怕出问题,与4.0.0一致即可。

    新建python文件,导入selenium中的webdriver:

    from selenium from webdriver

    2.2.下载webDriver

    新版本的浏览器请使用此处地址:Chrome for Testing availability

    下载对应浏览器的webDriver,例如:Chrome浏览器对应的webDriver

    注意:一定要下载浏览器对应版本的webDriver,如果没有完全对应的,可以下载接近版本的webDriver。

    将下载chromedriver_win32.zip解压,并将其内的chromedriver.exe复制到Python安装目录下的Scripts目录中。

    2.3.基本使用

    from selenium import webdriver​# 使用Chrome谷歌的webDriverdriver = webdriver.Chrome()# 模拟get请求抓取jd网站driver.get("https://www.jd.com")

    Firefox:

    driver = webdriver.Firefox()

    Safari:

    driver = webdriver.Safari()

    Edge:

    driver = webdriver.Edge()

    2.4.元素查找

    使用find_element方法查找元素。可以使用各种定位方式,例如通过ID、类名、标签名等。

    方法说明
    find_element_by_name通过ID查找元素
    find_element_by_xpath通过XPath查找元素
    find_element_by_tag_name通过标签名查找元素
    find_element_by_class_name通过类名查找元素
    find_element_by_css_selector通过CSS选择器查找元素

    注意:多个元素的查找只需要将element改为elements即可。

    # 通过ID查找元素element = driver.find_element_by_id("J_searchbg")print(element.text)# 通过标签名查找element = driver.find_element_by_tag_name("input")print(element.get_attribute("aria-label"))# 通过css样式查找elements = driver.find_element_by_class_name("button")print(elements.get_attribute("aria-label"))

    注意:element.text用于获取元素的文本内容;element.get_attribute()用于获取元素的属性值。

    2.5.模拟用户操作

    方法说明
    clear清楚元素内容
    send_keys("值")模拟按键输入
    click单击元素,触发元素的点击事情
    submit提交表单

    案例演示:如何模拟JD商城搜索指定商品信息

    import timefrom selenium import webdriver​driver = webdriver.Chrome();driver.get("https://search.jd.com/Search?keyword=手机")​# 获取输入框val = driver.find_element_by_id("key")# 清空输入框的条件val.clear()# 重新设置查询条件val.send_keys("电脑")# 获取查询按钮并触发点击事件btn = val.parent.find_element_by_css_selector("button.button.cw-icon")btn.click()# 睡眠3秒time.sleep(3)# 滚动到页面底部# driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")# 睡眠3秒# time.sleep(3)# 循环获取网页中电脑的名称names = driver.find_elements_by_css_selector("#J_goodsList > ul > li > p > p.p-name.p-name-type-2 > a > em")for name in names:    print("【电脑】--",name.text)

    2.6.优化操作

    无头模式:不打开浏览器

    import time​from selenium import webdriver​options = webdriver.ChromeOptions()options.add_argument("--headless")driver = webdriver.Chrome(options=options)driver.get("https://search.jd.com/Search?keyword=手机")

    案例演示:模拟点击frame窗口中的按钮

    import timefrom selenium import webdriverdriver = webdriver.Chrome()driver.get("https://search.jd.com/Search?keyword=手机")# 点击用户图标user = driver.find_element_by_class_name("tab-ico")user.click()# 睡眠2秒time.sleep(2)# 先要获取弹开的子窗口frameframe = driver.find_element_by_id("dialogIframe")# 切换到子窗口driver.switch_to.frame(frame)# 在获取子窗口中的QQ登录按钮driver.find_element_by_css_selector("a.pdl").click()

上一篇:HTML时钟源码解析与展示指南

下一篇:Win10密码修改步骤指南