BeatifulSoup findAll正在返回一个空数组(python)

问题描述 投票:-1回答:1

我正试图从这个网页上获取数据。https:/playruneterra.coms-esnews 而我想得到的部分是这样的。

enter image description here

我使用BeatufulSoup来获取html并在其中进行搜索 但是当我使用findAll方法来获取这一行时,它给我返回一个空数组。我在其他页面中也试过同样的方法,但效果很好。到底发生了什么?

这是我的代码。

enter image description here

这是个正常工作的例子

enter image description here

谢谢大家

python html beautifulsoup
1个回答
1
投票

你可以用PyQt搭建一个无头浏览器,然后从网站上搜刮数据。下面是给你的演示代码。

import bs4 as bs
import sys
import urllib.request
from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl

class Page(QWebEnginePage):
    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebEnginePage.__init__(self)
        self.html = ''
        self.loadFinished.connect(self._on_load_finished)
        self.load(QUrl(url))
        self.app.exec_()

    def _on_load_finished(self):
        self.html = self.toHtml(self.Callable)
        print('Load finished')

    def Callable(self, html_str):
        self.html = html_str
        self.app.quit()


def main():
    page = Page('https://playruneterra.com/es-es/news')
    soup = bs.BeautifulSoup(page.html, 'html.parser')
    js_test = soup.find('h2', class_='heading-03 src-component-content-NewsItem-___NewsItem-module__title___3OcDj')
    print(js_test.text)

if __name__ == '__main__': main()

0
投票

第二个参数是 findAll 应该是一个dict,而不是一个字符串。


-2
投票

首先右击并进入查看页面源,搜索你要找的关键词,如果你能在那里找到你的内容,那么你就可以在上面使用汤,否则你可以使用硒。

而在汤的情况下,只需将类名用dict格式包裹起来即可。

title = soup.findAll('h2',{'class':'add your full classes here'})
© www.soinside.com 2019 - 2024. All rights reserved.