Python3使用Selenium抓取JavaScript动态生成的HTML网页

Aria
Aria
发布时间:2026-10-13 | 2人浏览过
原创

本文详解如何使用Python3结合Selenium库解决urllib无法抓取JavaScript动态生成内容的问题。通过实例演示Firefox浏览器自动化操作,包括页面加载、元素查找及模拟按键,帮助开发者高效获取动态网页数据。

本文详细介绍利用Python3抓取由JavaScript动态生成的HTML网页的具体实现方法,供读者参考学习。

使用urllib等常规库抓取网页时,仅能读取静态源文件,无法获取由JavaScript脚本生成的内容。

原因在于urllib抓取过程是瞬时的,不会等待JavaScript的加载延迟,因此无法读取页面中由JS生成的内容。

那么,由JavaScript生成的内容是否就无法读取了呢?答案是否定的。

此处介绍一个Python库:selenium,本文示例基于版本2.44.0。

首先进行安装操作:

pip install -U selenium

接下来通过三个示例说明其具体用法:

【例0】

启动Firefox浏览器,并加载指定URL地址的页面。

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.baidu.com/')

【例1】

启动Firefox浏览器,加载百度主页,搜索关键词“seleniumhq”,最后关闭浏览器。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get('http://www.baidu.com')
assert '百度' in browser.title
elem = browser.find_element_by_name('p') # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN) # 模拟按键
browser.quit()

【例2】

Selenium WebDriver常用于网络程序测试。以下是一个使用Python标准库unittest的示例:

import unittest
class BaiduTestCase(unittest.TestCase):
  def setUp(self):
    self.browser = webdriver.Firefox()
    self.addCleanup(self.browser.quit)
  def testPageTitle(self):
    self.browser.get('http://www.baidu.com')
    self.assertIn('百度', self.browser.title)
if __name__ == '__main__':
  unittest.main(verbosity=2)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述内容对大家学习Python程序设计有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表