2017-08-15 23 views
0

誰かがこのコードを実行すると空白の返品を受ける理由を説明してもらえますか?私は単に美しいスープを使ってhtmlタグの内容を印刷しようとしています。コードは以下のとおりです。あなたはこのようなあなたのコメントでお願いしてあなたがPyQT5を使用して複数のURLを取得して処理することができますWeb Scraping - 空白の返信

おかげ

import urllib3 
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 
from bs4 import BeautifulSoup 
http = urllib3.PoolManager() 

def stats(): 
url = 'https://www.flashscore.com.au/football/usa/mls/results/' 
response = http.request('GET', url) 
soup = BeautifulSoup(response.data,'lxml') 
right_table=soup.find('div',{'class':'fs-table tournament-page'}) 
print(right_table.text) 

stats()  
+0

問題は、Webページがクライアント側レンダリングされるということですので、 divは最初は内容がありません。さまざまな技術が必要です。https://stackoverflow.com/questions/2148493/scrape-html-generated-by-javascript-with-python –

+0

このページでは、JavaScriptとWebSocketを使用してデータを読み込み、取得し、レンダリングしています。レンダリング方法については、https://stackoverflow.com/questions/45259232/scraping-google-finance-beautifulsoup/への私の回答を参照してください。 –

+0

@ Error-SyntacticalRemorse終了しました。ありがとうございました –

答えて

0

from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from PyQt5.QtWebKit import * 
from PyQt5.QtWebKitWidgets import QWebPage 
from PyQt5.QtWidgets import QApplication 
import bs4 as bs 
import sys 


class Render(QWebPage): 
    def __init__(self): 
     super(Render, self).__init__() 
     self.mainFrame().loadFinished.connect(self.handleLoadFinished) 

    def start(self, urls): 
     self._urls = iter(urls) 
     self.fetchNext() 

    def fetchNext(self): 
     try: 
      url = next(self._urls) 
     except StopIteration: 
      return False 
     else: 
      self.mainFrame().load(QUrl(url)) 
     return True 

    def processCurrentPage(self): 
     print (self.mainFrame().url().toString()) 
     result = self.mainFrame().toHtml() 
     soup = bs.BeautifulSoup(result, 'lxml') 
     right_table = soup.find('div', {'class': 'fs-table tournament-page'}) 
     print(right_table.text) 

    def handleLoadFinished(self): 
     self.processCurrentPage() 
     if not self.fetchNext(): 
      app.quit() 


if __name__ == '__main__': 
    urls = ["https://www.flashscore.com.au/football/usa/mls/results/", "https://www.flashscore.com.au/football/usa/mls/fixtures/"] 
    app = QApplication(sys.argv) 
    renderer = Render() 
    renderer.start(urls) 
    sys.exit(app.exec_())