PythonPhantomJS&;Beautifulsoup Scraping Java-什么';这里丢了什么?

PythonPhantomJS&;Beautifulsoup Scraping Java-什么';这里丢了什么?,python,selenium,web-scraping,beautifulsoup,phantomjs,Python,Selenium,Web Scraping,Beautifulsoup,Phantomjs,刮削静态页面的工作原理如下: soup = BeautifulSoup(driver.page_source, "lxml") for results in soup.findAll("li", {"class" : "open"}): print(results.get_text()) 但是Javascript网站给我带来了一个问题 因此,我使用的是PhantomJS,一开始的明显想法是“当我试图刮的时候,它只是没有加载” 所以我陷入了一个时间睡眠(不理想-我知道我会换成元素的存

刮削静态页面的工作原理如下:

soup = BeautifulSoup(driver.page_source, "lxml")


for results in soup.findAll("li", {"class" : "open"}):
    print(results.get_text())
但是Javascript网站给我带来了一个问题

因此,我使用的是PhantomJS,一开始的明显想法是“当我试图刮的时候,它只是没有加载”

所以我陷入了一个时间睡眠(不理想-我知道我会换成元素的存在)和一个:

屏幕截图显示我正在寻找的数据已加载。对于不使用Java加载的元素,我可以使用与上面相同的代码从该页面中刮取其他数据位

根据屏幕截图,数据在页面上。我使用的数据和我在.NETlibs上使用的数据相同,这些libs可以很好地读取同一个站点

for names in soup.findAll("span", {"class" : "the-name ng-name ng-big-scope"}):
        print(names)
我在这里删除了.get_text(),以防它导致某些东西损坏。但不管怎样,这都不会带来任何回报。我不知道为什么

我可以在vb.net中使用完全相同的数据:

 For Each element As HtmlElement In Me.Browser.Document.GetElementsByTagName("span")
   If element.GetAttribute("className").Contains("the-name ng-name ng-big-scope") Then
                    print(element.innertext)
   End If
Next
我知道我在那里的.net示例中使用了.contains,但我已经三次检查了它在本例中是否是正确的类名

因此,语法适用于静态数据。 我有类名等等。。。对,因为我可以在.Net上刮。 我正在寻找的数据已经加载(根据截图)

我被难住了。如果有人能指出我在这里搞砸了,我会非常感激的

/编辑:

我在另一个基于Javascript的站点上运行了一个测试,得到了第一个结果,第二个结果也有一点。当那里有十几个结果的时候。Net再次毫无问题地处理了这个问题


因此,我正在考虑我的语法是否正确,问题是BF在站点上处理格式错误的代码。我们将尝试使用一两个备选方案,看看这是否会改变什么。

结果表明代码没有问题

网站上格式错误的HTML导致lxml出现问题,导致无法读取结果

 For Each element As HtmlElement In Me.Browser.Document.GetElementsByTagName("span")
   If element.GetAttribute("className").Contains("the-name ng-name ng-big-scope") Then
                    print(element.innertext)
   End If
Next