2017-08-01 2 views
1

Ich möchte alle Hashtags von einer bestimmten Website extrahieren: Zum Beispiel "Ich liebe #stack overflow weil #people sind sehr #helfen!" Dies sollte die 3 Hashtags in eine Tabelle ziehen. In der Website, die ich dort bin Targeting ist eine Tabelle mit einer #tag Beschreibung können wir So finden #love diese Hashtag über die Liebe sprichtHashtags python html

Das ist meine Arbeit:

#import the library used to query a website 
    import urllib2 
    #specify the url 
    wiki = "https://www.symplur.com/healthcare-hashtags/tweet-chats/all" 
    #Query the website and return the html to the variable 'page' 
    page = urllib2.urlopen(wiki) 
    #import the Beautiful soup functions to parse the data returned from the 
    website 
    from bs4 import BeautifulSoup 
    #Parse the html in the 'page' variable, and store it in Beautiful Soup 
    format 
    soup = BeautifulSoup(page, "lxml") 
    print soup.prettify() 
    s = soup.get_text() 
    import re 
    re.findall("#(\w+)", s) 

Ich habe eine Frage in der Ausgang: die erste ist, dass die Ausgabe wie folgt aussehen: [u'eeeeee‘, u'333333' , u'222222' , u'222222' , u'222222' , u'222222' , u'222222 ', u'222222', u'222222 ', u'AASTGrandRoundsacute'

Die Ausgabe verkettet den Hashtag mit dem ersten Wort in der Beschreibung. Wenn ich mit dem Beispiel vergleiche, das ich vor der Ausgabe aufgerufen habe, ist 'Lovethis'.

Wie kann ich nur das eine Wort nach dem Hashtag extrahieren.

Danke

+1

das 'u' ist nicht wirklich da. Es wird von Python angezeigt, um Ihnen zu sagen, dass der String neben ihm in [Unicode] (https://en.wikipedia.org/wiki/Unicode) ist. https://Stackoverflow.com/a/599653/3072566 – litelite

+0

Vielen Dank das ist nützlich! –

Antwort

0

Ich denke, es gibt keine Notwendigkeit regex zu verwenden ist, den Text, den Sie von der Seite bekommen zu analysieren, können Sie BeautifulSoup selbst dafür. Ich verwende Python3.6 im folgenden Code, nur um den gesamten Code anzuzeigen, aber die wichtige Zeile ist hashtags = soup.findAll('td', {'id':'tweetchatlist_hashtag'}). Beachten Sie alle Hashtags in der Tabelle haben td Tag und id Attribut = tweetchatlist_hashtag, so .findAll Aufruf ist der Weg hier zu gehen:

import requests 
import re 
from bs4 import BeautifulSoup 

wiki = "https://www.symplur.com/healthcare-hashtags/tweet-chats/all" 
page = requests.get(wiki).text 
soup = BeautifulSoup(page, "lxml") 

hashtags = soup.findAll('td', {'id':'tweetchatlist_hashtag'}) 

Lassen Sie uns jetzt auf den ersten Punkt unserer Liste einen Blick:

>>> hashtags[0] 
<td id="tweetchatlist_hashtag" itemprop="location"><a href="https://www.symplur.com/healthcare-hashtags/aastgrandrounds/" title="#AASTGrandRounds">#AASTGrandRounds</a></td> 

So sehen wir, dass das, was wir wirklich wollen, ist der Wert von title Attribut a:

>>> hashtags[0].a['title'] 
'#AASTGrandRounds' 

Um fortzufahren eine Liste aller Hashtags mit Liste Verständnis zu bekommen:

>>> lst = [hashtag.a['title'] for hashtag in hashtags] 

Wenn Sie nicht mit Liste Verständnis Syntax verwendet werden, über die Linie ähnelt dies:

>>> lst = [] 
>>> for hashtag in hashtags: 
    lst.append(hashtag.a['title']) 

lst dann ist die gewünschte Ausgabe, siehe die ersten 20 Einträge der Liste:

>>> lst[:20] 
['#AASTGrandRounds', '#abcDrBchat', '#addictionchat', '#advocacychat', '#AetnaMyHealthy', '#AlzChat', '#AnatQ', '#anzOTalk', '#AskAvaility', '#ASPChat', '#ATtalk', '#autchat', '#AXSChat', '#ayacsm', '#bcceu', '#bccww', '#BCSM', '#benurse', '#BeTheDifference', '#bioethx'] 
+0

Danke, Ihre Lösung ausgeführt Ich habe den Fehler: ConnectionError: HTTPSConnectionPool (Host = 'www.symplur.com', Port = 443): Versuche mit URL:/Healthcare-Hashtags/tweet-chats/alle (verursacht durch NewConnectionError (': Fehler anpassen les eine neue Verbindung: [Errno 10060] Ein Verbindungsversuch \ xe9chou \ xe9, weil die Partei \ xe9 n \ x92a nicht r \ xe9pondu richtig über \ xE0 d \ einige harte x92une verbinden \ xe9e oder Verbindungs ​​\ xe9tablie a \ xe9chou \ xe9 weil die \ x92h \ Verbindung xf4te n \ x92a nicht r \ xe9pondu ‚)) –

+0

I hinzugefügt: Import von Zeit schlafen .... aber noch Avez la même Fehler. dank .. –

+0

Es ist ein Proxy-Problem! –

Verwandte Themen