2017-04-11 3 views
1

Ich benutze beautifulsoup, um Chat-Nachrichten zu kratzen, aber wenn aufgefordert, zu drucken, gibt keine aus und wird mit einem Code 0 beendet. Was mache ich falsch?beautifulsoup4 nicht finden HTML

# import libraries, pip install beautifulsoup4. 
import urllib2 
from bs4 import BeautifulSoup 
import csv 
from datetime import datetime 

quote_page = 
'https://robertsspaceindustries.com/spectrum/community/SC/lobby/8' 

#finding 
page = urllib2.urlopen(quote_page) 
soup = BeautifulSoup(page, 'html.parser') 
name = soup.find('messages-items', attrs={'message-item status-default': 
'content'}) 
print name 

#logging 
with open('index.csv', 'a') as csv_file: 
    writer = csv.writer(csv_file) 
    writer.writerow([name, datetime.now()]) 

Antwort

1

Wenn Sie genau beobachten, wenn Chrome Netzwerk-Tools oder Firebug Oppening, werden Sie feststellen, dass Ihre Website eine Webservice fordert die Daten zu holen, die Sie wollen.

Sie werden einen Beitrag mit drei Parametern simulieren müssen:

  • before die die letzte ID ist erhielt eine neue Nachricht zu erhalten;
  • lobby_id Welches ist die aktuelle Lobby, die Sie abrufen möchten;
  • size, die, wie viele Nachrichten ist

zu holen Es wird ein Json-Objekt zurück, in dem Sie nur die Ergebnisse zu analysieren, müssen Sie erhalten möchten;

Hier ist ein Beispiel:

import requests 
import json 

response = requests.post('https://robertsspaceindustries.com/api/spectrum/message/history', data = {'before': None, 'lobby_id':'8', 'size':'50'}) 
lobby_data = json.loads(response.content.decode("utf-8")) 

for comment in lobby_data["data"]["messages"]: 
    print ("%s: %s" % (comment["member"]["displayname"], comment["content_state"]["blocks"][0]["text"])) 

Welche Ausgänge:

Antinov: Esp since spectrum doesn't even open a new tab to view large images.... 
Sir Quentin Reginald Watson: write a suggestion about it 
Antinov: As if CIG listens to those. 
Sir Quentin Reginald Watson: you will never know if you don't try 
.... 
Verwandte Themen