网页抓取:如何提取这种div标签?

2024-06-26 13:55:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在看一个标签:

enter image description here

当我写代码时

message = soup.find("div", {"class": "text-msg-container"})

它一点也没有给我。什么是_ngcontent-vex-c62data-e2e-text-message-content标记?我也需要包括它们吗?我应该怎样写才能得到div标签


Tags: 代码textdivmessagedatacontainermsg标签
3条回答

如果要查找类text-msg-container,请尝试Selenium。它将很容易找到任何定位器

import unittest    
from selenium import webdriver
    
    class PythonSearch(unittest.TestCase):
    
        def setUp(self):
            self.driver = webdriver.Firefox()
    
        def test_search(self):
            driver = self.driver
            driver.get("http://www.yoursite.com")
            elem = driver.find_element_by_css_selector(".text-msg-container")
    
        def tearDown(self):
            self.driver.close()
    
    if __name__ == "__main__":
        unittest.main()

如果您正在测试Chrome,请使用driver = webdriver.Chrome('/path/to/chromedriver')。在这里查看更多信息https://chromedriver.chromium.org/getting-started。 硒的入门https://selenium-python.readthedocs.io/getting-started.html#simple-usage

您不能,因为当您发送GET请求获取页面代码时,div不在那里

该页面是使用Angular框架构建的,该框架生成SPA(单页应用程序),这意味着您在发送GET请求时无法从中刮取数据,因为数据不在那里。 数据是由Javascript代码生成的,需要先运行Javascript代码才能将所需数据添加到网页中

您需要使用另一种方式,允许Javascript代码先运行,然后再尝试获取所需的数据

请试试这个

message = soup.find("div", _class="text-msg-container")

相关问题 更多 >