09 selenium解析和提取数据的方法

    技术2026-03-27  10

    # Author:Nimo_Ding ''' selenium 是真实的模拟人操作浏览器,需要等待网页缓冲的时间. 在爬取大量数据时就会比较慢,这是它的缺点。 通常在爬虫项目中,selenium都是用在其他方法无法解决或很难解决问题的时候才会用到。 学习文档:https://seleniumhq.github.io/selenium/docs/api/py/api.html https://selenium-python-zh.readthedocs.io/en/latest/ 静态网页: HTML源代码与渲染完成的Elements源代码一样。 动态网页: 比如QQ音乐,要爬取的数据不在HTML源代码中,而是在json中,那就不能直接使用网址的url了, 需要找到json数据的真实url。 不论数据存在哪里,浏览器总是在向服务器发起各式各样的请求,当这些请求完成后, 它们会一起组成开发者工具的Elements中所展示的,渲染完成的网页源代码。 安装浏览器的驱动: https://localprod.pandateacher.com/python-manuscript/crawler-html/chromedriver/ChromeDriver.html 以你好蜘蛛侠这个网站为例: https://localprod.pandateacher.com/python-manuscript/hello-spiderman/ 前面我们用BeautifulSoup解析网页源代码,然后提取其中的数据。 selenium库同样也具备解析数据、提取数据的能力, 两者的不同即是: selenium所解析提取的,是Elements中的所有数据, 而BeautifulSoup所解析的则只是Network中第0个请求的响应。 用selenium打开网页,所有信息都加载到了Elements那里,之后就可以把动态网页用静态网页的方法提取了。 ''' import time from selenium import webdriver # 从selenium库中调用webdriver模块 driver = webdriver.Chrome() # 设置引擎为Chrome,真实的打开一个Chrome浏览器。 # 为你打开指定的url。 driver.get('https://localprod.pandateacher.com/python-manuscript/hello-spiderman/') time.sleep(2) # 如下是解析和提取数据的一些方法: # 解析网页并提取第一个label标签中的文字,通过元素名称 label = driver.find_element_by_tag_name('label') print(type(label)) print(label.text) # 提取多个标签elements labels = driver.find_elements_by_tag_name('label') print(type(labels)) for i in labels: print(i.text) # 通过元素的class属性选择 label1 = driver.find_element_by_class_name('teacher') print(label1.get_attribute('type')) # 通过元素的id选择: label2 = driver.find_element_by_id('h1') print(label2.text) # 通过元素的name属性选择: print(driver.find_element_by_name('form1')) #以下两个方法可以提取出超链接: # find_element_by_link_text:通过链接文本获取超链接 # 例如<a href="spidermen.html">你好,蜘蛛侠!</a> # 可以使用find_element_by_link_text('你好,蜘蛛侠!') # find_element_by_partial_link_text:通过链接的部分文本获取超链接 # 例如<a href="https://localprod.pandateacher.com/python-manuscript/hello-spiderman/">你好,蜘蛛侠!</a> # 可以使用find_element_by_partial_link_text('你好') # 获取selenium渲染出的完整的网页源代码方式: # html =driver.page_source # print(html) # 这里获取到的是字符串格式的网页源代码,可以用BeautifulSoup来解析和提取数据了。 driver.close() # 关闭浏览器驱动。

     

    Processed: 0.009, SQL: 9