我正试图从这个网页上获取数据。https:/playruneterra.coms-esnews 而我想得到的部分是这样的。
我使用BeatufulSoup来获取html并在其中进行搜索 但是当我使用findAll方法来获取这一行时,它给我返回一个空数组。我在其他页面中也试过同样的方法,但效果很好。到底发生了什么?
这是我的代码。
这是个正常工作的例子
谢谢大家
你可以用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()
第二个参数是 findAll
应该是一个dict,而不是一个字符串。
首先右击并进入查看页面源,搜索你要找的关键词,如果你能在那里找到你的内容,那么你就可以在上面使用汤,否则你可以使用硒。
而在汤的情况下,只需将类名用dict格式包裹起来即可。
title = soup.findAll('h2',{'class':'add your full classes here'})