2017-08-23 3 views
0

Ich verwende Goose, um den Titel/Textkörper eines Artikels von einer URL zu lesen. Dies funktioniert jedoch nicht mit einer Twitter-URL, denke ich aufgrund der unterschiedlichen HTML-Tag-Struktur. Gibt es eine Möglichkeit, den Tweet-Text von einem solchen Link zu lesen?Ist es möglich, Tweet-Text einer Tweet URL ohne Twitter API zu lesen?

Ein solches Beispiel für einen Tweet (verkürzte Link) ist wie folgt:

https://twitter.com/UniteAlbertans/status/899468829151043584/photo/1 

HINWEIS: Ich weiß, wie Tweets über Twitter-API zu lesen. Das interessiert mich aber nicht. Ich möchte nur den Text durch Parsing der HTML-Quelle ohne all die Twitter-Authentifizierung Ärger bekommen.

Antwort

0

Scrape sich

Öffnen Sie die URL des tweet, um HTML-Parser Ihrer Wahl passieren und extrahieren Sie die XPaths Sie interessiert sind

Scraping wird diskutiert in:. http://docs.python-guide.org/en/latest/scenarios/scrape/

XPaths erhalten Sie, indem Sie mit der rechten Maustaste auf das gewünschte Element klicken, "Inspect" auswählen, mit der rechten Maustaste auf die markierte Linie im Inspektor klicken und "Copy"> "XPath kopieren" auswählen, wenn die Struktur der Site immer gleich ist. Andernfalls wählen Sie Eigenschaften, die genau das gewünschte Objekt definieren.

In Ihrem Fall:

//div[contains(@class, 'permalink-tweet-container')]//strong[contains(@class, 'fullname')]/text() 

werden Sie den Namen des Autors abrufen und

//div[contains(@class, 'permalink-tweet-container')]//p[contains(@class, 'tweet-text')]//text() 

werden Sie den Inhalt der Tweet bekommen.

Der vollständige Arbeitsbeispiel:

from lxml import html 
import requests 
page = requests.get('https://twitter.com/UniteAlbertans/status/899468829151043584') 
tree = html.fromstring(page.content) 
tree.xpath('//div[contains(@class, "permalink-tweet-container")]//p[contains(@class, "tweet-text")]//text()') 

Ergebnisse in:

['Breaking:\n10 sailors missing, 5 injured after USS John S. McCain collides with merchant vessel near Singapore...\n\n', 'https://www.', 'washingtonpost.com/world/another-', 'us-navy-destroyer-collides-with-a-merchant-ship-rescue-efforts-underway/2017/08/20/c42f15b2-8602-11e7-9ce7-9e175d8953fa_story.html?utm_term=.e3e91fff99ba&wpisrc=al_alert-COMBO-world%252Bnation&wpmk=1', u'\xa0', u'\u2026', 'pic.twitter.com/UiGEZq7Eq6'] 
+0

einfach die XPath verwendet zu klären ... '' // - suchen überall für 'div [enthält (@class, 'permalink-tweet-container')] '- div mit der Klasse 'permalink-tweet-container'' // '- und irgendwo von diesem ein' strong [enthält (@class, 'fullname')] '- strong, das die Klasse enthält 'fullname' '/' - aus dem direkt 'text()' - holt den Text. – petrpulc

+0

Sie können Ihren eigenen XPath zum Beispiel auf http://videlibri.sourceforge.net/cgi-bin/xxidelcgi testen – petrpulc

+0

Wenn dies Ihre Frage beantwortet, akzeptieren Sie sie bitte. – petrpulc

Verwandte Themen