【发布时间】:2020-04-06 07:50:43
【问题描述】:
我是抓取动态加载网站的新手,我一直在尝试抓取该网站的团队名称和几率
https://www.cashpoint.com/de/fussball/deutschland/bundesliga
我在这篇文章中使用 PyQt5 进行了尝试
PyQt4 to PyQt5 -> mainFrame() deprecated, need fix to load web pages
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://www.cashpoint.com/de/fussball/deutschland/bundesliga')
soup = bs.BeautifulSoup(page.html, 'html.parser')
js_test = soup.find('div', class_='game__team game__team__football')
print(js_test.text)
if __name__ == '__main__': main()
但它不适用于我要抓取的网站。我得到一个,
AttributeError: 'NoneType' object has no attribute 'text' Error。我没有使用这种方法获取网站的内容,尽管在上面的帖子中有一个为动态加载的网站编写的方法。正如我所读到的,在处理动态加载的网站时,第一种方法是确定数据在页面上的呈现方式。我该怎么做,为什么 PyQt5 不适用于这个网站? Selenium 的方式对我来说不是一个选择,因为它会太慢而无法获得实时赔率。当我检查网站以使用它时,我能否获得网站的 html 内容,然后以 Beautifulsoup 或 Scrapy 的正常方式使用它?提前谢谢你。
【问题讨论】:
-
为什么硒太慢了?它应该能够以秒为单位加载页面,这将是这里最简单的解决方案。
-
正如论坛上有人提到的,Selenium 使用大量资源,当您使用线程并行抓取 50 个站点时,它会变慢,不是吗?
标签: javascript python web-scraping beautifulsoup pyqt5