如何使用 Selenium Python 定位元素?


随着技术的不断变化,为了在网络上呈现内容,经常需要重新设计和重构网页或网站的内容。Selenium 与 Python 的结合是一个很好的组合,有助于从网页中提取所需的内容。Selenium 是一种免费的开源自动化工具,用于在多个平台上评估 Web 应用程序。Selenium 测试脚本可以用多种计算机语言编写,例如 Java、C#、Python、NodeJS、PHP、Perl 等。在这篇 Python Selenium 文章中,通过两个不同的示例,给出了使用 Selenium 定位网页元素的方法。在这两个示例中,都使用了新闻网站来提取内容。

定位要提取的元素 -

打开要从中提取内容的网站。现在按下鼠标右键并打开检查窗口。突出显示网页上的元素或部分,并在检查窗口中查看其 HTML 设计规范。使用这些规范来定位元素。

示例 1:使用 Selenium 和 Python 定位具有特定类名的 div 元素

算法

  • 步骤 1 - 首先下载与 Chrome 版本相同的 Chrome 驱动程序。现在将该驱动程序保存到 Python 文件所在的同一文件夹中。

  • 步骤 2 - 使用 START_URL= “https://www.indiatoday.in/science”。导入 BeautifulSoup 用于解析。使用“class”作为“story__grid”来定位 div 元素。

  • 步骤 3 - 指定网站 URL,并启动驱动程序以获取 URL。

  • 步骤 4 - 使用 BeautifulSoup 解析获取的页面。

  • 步骤 5 - 搜索具有所需类名的 div 标签。

  • 步骤 6 - 提取内容。打印它并将其转换为 html 格式,方法是在 HTML 标签内包含提取的内容。

  • 步骤 7 - 编写输出 HTML 文件。运行程序。打开输出 HTML 文件并检查结果。

示例

from selenium import webdriver
from bs4 import BeautifulSoup
import time

START_URL= "https://www.indiatoday.in/science"
              
driver = webdriver.Chrome("./chromedriver")
driver.get(START_URL)
time.sleep(10)
def scrape():
   temp_l=[]
   soup = BeautifulSoup(driver.page_source, "html.parser")
   for div_tag in soup.find_all("div", attrs={"class", "story__grid"}):   
      temp_l.append(str(div_tag))
   print(temp_l)   

   enclosing_start= "<html><head><link rel='stylesheet' " +  "href='styles.css'></head> <body>" 
   enclosing_end= "</body></html>"

   with open('restructuredarticle.html', 'w+',  encoding='utf-16') as f:
      f.write(enclosing_start)
      f.write('\n' + '<p> EXTRACTED CONTENT START </p>'+'\n')
      for items in temp_l: 
         f.write('%s' %items)
      f.write('\n' + enclosing_end)    
                   
   print("File written successfully")
   f.close()
scrape() 

输出

在命令窗口中运行 Python 文件 -

打开 cmd 窗口。首先,我们将在 cmd 窗口中检查输出。然后在浏览器中打开保存的 html 文件以查看提取的内容。

示例 2:使用 Selenium 和 Python 定位具有特定类名的 h4 元素

  • 步骤 1 - 首先下载与 Chrome 版本相同的 chromedriver。现在将该驱动程序保存到 Python 文件所在的同一文件夹中。

  • 步骤 2 - 使用 START_URL= “https://jamiatimes.in/”。导入 BeautifulSoup 用于解析。使用“class”作为“entry-title title”来定位 h4 元素。

  • 步骤 3 - 指定网站 URL,并启动驱动程序以获取 URL。

  • 步骤 4 - 使用 BeautifulSoup 解析获取的页面。

  • 步骤 5 - 搜索具有所需类名的 h4 标签。

  • 步骤 6 - 提取内容。打印它并将其转换为 html 格式,方法是在 HTML 标签内包含提取的内容。

  • 步骤 7 - 编写输出 HTML 文件。运行程序。打开输出 HTML 文件并检查结果。

示例

from selenium import webdriver
from bs4 import BeautifulSoup
import time

START_URL= "https://jamiatimes.in/"         
driver = webdriver.Chrome("./chromedriver")
driver.get(START_URL)
time.sleep(10)
def scrape():
   temp_l=[]
   soup = BeautifulSoup(driver.page_source, "html.parser")
   for h4_tag in soup.find_all("h4", attrs={"class", "entry-title title"}):        
      temp_l.append(str(h4_tag))
   enclosing_start= "<html><head><link rel='stylesheet' " +  "href='styles.css'></head> <body>" 
   enclosing_end= "</body></html>"
   with open('restructuredarticle2.html', 'w+',  encoding='utf-16') as f:
      f.write(enclosing_start)
      f.write('\n' + '<p> EXTRACTED CONTENT START </p>'+'\n')
      for items in temp_l: 
         f.write('%s' %items)
      f.write('\n' + enclosing_end)                 
   print("File written successfully")
   f.close()
   print(temp_l)
scrape() 

输出

在命令窗口中运行 python 文件 -

打开 cmd 窗口。首先,我们将在 cmd 窗口中检查输出。然后在浏览器中打开保存的 html 文件以查看提取的内容。

在这篇 Python Selenium 文章中,给出了两个不同的示例,展示了如何定位元素进行抓取的方法。在第一个示例中,Selenium 用于定位 div 标签,然后从新闻网站抓取指定的元素。在第二个示例中,定位了 h4 标签,并从另一个新闻网站提取了所需的标题。

更新于: 2023-05-04

891 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告