Python3使用Selenium抓取JavaScript动态生成的HTML网页
本文详解如何使用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程序设计有所帮助。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













