Scraping all comments from specific site - python

I would like to scrape all comments from all pages of a specific article. For example this article: Link
I think the comments are in javascript, could anyone help me figure out how I can scrape all comments?
This is the code I use
def getSpiegelComments(url):
try:
html = urlopen(url)
except HTTPError as e:
print(e)
return None
try:
bsObj = BeautifulSoup(html, 'html.parser')
comments = bsObj.findAll("div", {"class": "article-comment"})
except AttributeError as e:
return None
for comment in comments:
yield comment
url = 'http://www.spiegel.de/politik/ausland/syrien-die-islamisten-sind-aleppos-letzte-hoffnung-a-1105806.html'
comments = getSpiegelComments(url)
if comments == None:
print("Comments could not be found on " + url)
else:
for comment in comments:
print(comment)
I need all comments (currently 124) from all pages. Not only the 5 comments from the first page.

All the text is available after each div.article-comment-title under the divs with the class js-article-post-full-text:
import requests
soup = BeautifulSoup(requests.get("http://www.spiegel.de/politik/ausland/syrien-die-islamisten-sind-aleppos-letzte-hoffnung-a-1105806.html").content)
for comm in soup.select("div.article-comment-title"):
print(comm.a.text)
print(comm.find_next("div","js-article-post-full-text").text)
To get all 120+, you can use the url http://www.spiegel.de/fragments/community/spon-495132-{}.html passing in the offset number to start from:
import re
def yield_comments(soup):
for comm in soup.select("div.article-comment-title"):
yield comm.a.text.strip(),comm.find_next("div", "js-article-post-full-text").text.strip()
next_url = "http://www.spiegel.de/fragments/community/spon-495132-{}.html"
url = "http://www.spiegel.de/politik/ausland/syrien-die-islamisten-sind-aleppos-letzte-hoffnung-a-1105806.html"
with requests.Session() as s:
soup = BeautifulSoup(s.get(url).content)
# get total comments
tot = re.search("\d+",soup.select_one("#js-article-comments-box-pager").find_previous_sibling("span").text)
tot = int(tot.group())
# get comments from first page
for title, com in yield_comments(soup):
print(title, com)
# start at the 6th comment until the end
for page in range(6, tot, 5):
soup = BeautifulSoup(s.get(next_url.format(page)).content)
for title, com in yield_comments(soup):
print(title, com)
That will give you comments all the way to 124:
.......................................
(u'117. Horst John', u'Zitat von Horst JohnAl-Sham, Al-Nusra usw. sind Nachfolger der Al qaida. Diese als Befreier zu sehen ist der blanke Hohn. Schauen sie nur die youtube Videos diese langb\xe4rtigen gekauften Terrorbande sich an. Waffendepots in Krankenh\xe4user und Schulen, Bombenattacken auf Fl\xfcchtlingscamps sind das Werk dieser Terroristen.\r\n\r\nWer sieht die denn hier oder auf SPON als Befreier? das steht ja nur, das das die letzte Hoffnung ist. Und so wird es sich wahrscheinlich auch f\xfcr die dort hungernden Menschen anf\xfchlen.')
(u'118. Verantwortung', u"Die viel naheliegendere Frage ist, warum ein Umsturzversuch, egal aus welcher Motivation heraus, der hunderttausende Tote gefordert, Millionen Menschen vertrieben und ein ganzes Land in eine Tr\xfcmmerlandschaft verwandelt hat, nicht l\xe4ngst vor Jahren abgebrochen wurde. \r\nDie Antwort ist bekannt und hat mit einer weiteren Frage zu tun:\r\n\r\nWieso fand sich die Bundesrepublik in einer Gemeinschaft der 'Freunde Syriens' mit Saudi-Arabien, Katar und der T\xfcrkei wieder, die nun beim besten Willen mit Demokratie in Syrien nichts zu tun hatten, die aber sp\xe4testens seit anfang 2012 flei\xdfig Waffen nach Syrien pumpten?\r\nhttp://www.nytimes.com/interactive/2013/03/25/world/middleeast/an-arms-pipeline-to-the-syrian-rebels.html?ref=middleeast&_r=0")
(u'119. # Piece', u'Zitat von Pieceich war bisher nicht als Kommentator bei SPON registriert, aber der hier publizierte Artikel ist derart nah an der Grenze zur islamistischen Propaganda, dass ich mich einer scharfen Protestnote nicht erwehren kann:\r\nWie um alles in der Welt ist es m\xf6glich radikalste Islamisten als "letzte Hoffnung f\xfcr Aleppo" derart offen zu glorifizieren? \r\n\r\nUnter gr\xf6\xdftem Wohlwollen verbleiben als Motivation f\xfcr diese Zeilen zwei M\xf6glichkeiten:\r\n\r\n1.Dem Autor dieses Artikels ist nicht bekannt welche Konsequenzen ein Sieg dieser "Freiheitsk\xe4mpfer" f\xfcr die Zivilbev\xf6lkerung nach sich z\xf6ge. \r\n\r\n2. Die Konsequenzen sind bekannt, werden jedoch als weniger schwerwiegend erachtet.\r\n\r\nBeides disqualifiziert den Autor im SPON zu publizieren.\r\n\r\n\r\nWas die wahren Motive der Dschihadisten (Stichwort: menschliche Schutzschilde usw.) anbetrifft, ganz zu schweigen.\r\n\r\nEs gibt noch eine Dritte M\xf6glichkeit: Sie haben den Autor nicht verstanden. Er hat sich keineswegs mit den Terroristen gemein gemacht, sondern lediglich versucht, die Gef\xfchlslage der dort eingeschlossenen Menschen nachzuvollziehen. Aber da m\xfcsste man dann nat\xfcrlich mal genauer lesen und auch noch mitdenken.')
(u'120. Die letzte Hofnung', u'Islamisten die letzte, im wahrsten Sinne des Wortes,\r\nHoffnung. Sind nicht die Islamisten und andere Rebellen der Grund daf\xfcr, dass die Bev\xf6lkerung so tief in der ...\r\nsitzt. Von wem wird dieser Schreiber eigentlich gesponsert.')
(u'121. #jethan', u'Zitat von jethaneigentlich islamische Terroristen, sind der Grund und der Ausl\xf6ser dieser Katastrophe.\r\nSie jetzt als Retter zu pr\xe4sentieren ist blanker Hohn gegen\xfcber der betroffenen Bev\xf6lkerung.\r\nDie h\xe4tte l\xe4ngst durch die Korridore die Stadt verlassen k\xf6nnen, w\xe4re sie nicht von den Terroristen, ja genau, denselben die sich jetzt als Retter feiern lassen, daran gehindert worden.\r\n\r\nDer Ausl\xf6ser ist Assat selbst: Er hat friedliche Demonstrationen mit Panzern niederwalzen lassen. DAS war der Beginn. Weitere Proteste der Bev\xf6lkerung gegen dieses Vorgehen folgte auf dem Fu\xdfe. Daraufhin lie\xdf Assat massiv seine Armee gegen die Demonstranten einsetzen.\r\n\r\nDas schaukelte sich dann soweit hoch, das teils ein machtvakuum entstand. Erst jetzt traten fanatische Islamisten auf den Plan.\r\n\r\nSie ignorieren die ganze Vorgeschichte.')
(u'122.', u'Zitat von jowittIch weis nicht, was Sie haben. In dem Artikel steht nichts davon, das die angreifenden Islamisten "gut" seien. Im gegenteil: Dort wird beschrieben, das sie einen "Gottesstaat" nach der Scharia wollen.\r\n\r\nNehmen Sie eigentlich alles so w\xf6rtlich? Dank zahlreicher Stilmittel l\xe4sst sich ein Text nicht nur interessant gestalten, manche lassen sich auch hervorragend dazu verwenden einen unterbewussten Eindruck beim Leser haften zu lassen. Propaganda egal welcher politischen Seite funktioniert auch oft auf die gleiche Art.\r\n\r\nDie "Rebellen" (stimme f\xfcr Unwort des Jahres in dieser Verwendung) l\xe4sst der Autor im Artikel an vielen Stellen tats\xe4chlich so dastehen als w\xfcrden diese nur den Zivilisten helfen wollen. Das wird so explizit nicht klar genannt, erschlie\xdft sich jedoch aus Wortwahl, Inhalt und Zusammenhang. W\xfcrde man in der Presse das offen so schreiben, w\xfcrde man hinterher definitiv darauf festgenagelt werden. Suchen Sie den Link des Mitkommentators zur ZON Meldung raus, nachdem die Rebellen die Zivilisten nicht aus der Stadt lassen. Dann vergleichen Sie den Inhalt dieses Artikels mit den vorliegenden Fakten, gerne auch auf den BBC News Seiten, die in dem Fall auch wesentlich objektiver sind. Das macht es u. U. leichter nachzuvollziehen, was der Vorposter gemeint hat.\r\n\r\nDie Rebellen, komischerweise tats\xe4chlich nicht Terroristen genannt obwohl die Definition passt, werden von Anfang an auf SPON und einigen anderen Nachrichtenseiten sehr besch\xf6nigend in den Artikeln abgebildet, \xe4hnlich der neuen Kiewer Regierung oder in weiten Teilen auch Erdogan. Da muss man noch nicht einmal auf RT oder \xe4hnliche Seiten, um das als Bl\xf6dsinn auszufiltern, da reichen ganz normale, objektive Nachrichten ohne Meinungsbildung alla BILD.')
(u'123. Guter Bericht', u'Danke f\xfcr diesen Bericht zur Lage in Syrien. \r\n\r\nUnd auch etwas zum Nachdenken: Wenn wir (die freien Demokratien) nicht helfen, aber radikale Islamisten, wird da nicht die H\xe4lfte Bev\xf6lkerung Syriens - immerhin mehr als 10 Millionen Menschen - den Islamisten geradezu in die Arme getrieben? Unterlassene Hilfeleistung wird bestraft. aj')
(u'124. Unterst\xfctzung von Extremisten', u'Zitat von jowittIch weis nicht, was Sie haben. In dem Artikel steht nichts davon, das die angreifenden Islamisten "gut" seien. Im gegenteil: Dort wird beschrieben, das sie einen "Gottesstaat" nach der Scharia wollen.\r\n\r\nWas steht in der \xdcberschrift?\r\n"Belagerte Stadt in Syrien: Die Islamisten sind Aleppos letzte Hoffnung"\r\nund weiter geht\'s:\r\n"W\xe4hrend die USA und Europa zusehen, wie Hunderttausende Menschen in Aleppo ausgehungert werden, kommen Islamisten den Eingeschlossenen zur Hilfe. Angef\xfchrt werden sie von einer Terrormiliz."\r\n\r\nWie w\xfcrden Sie denn diese SPON Einf\xfchrung interpretieren?\r\nEs steht doch w\xf6rtlich da - eine Terrormiliz kommt den Eingeschlossenen zu Hilfe und ist Hoffnung, sogar letzte Hoffnung.\r\n\'Hilfe\' assoziiere ich immer noch mit \'etwas Gutes leisten\'.\r\nEs steht im Text dann auch an keiner Stelle, da\xdf diese Hilfe vom Autor irgendwie ablehnt wird. \r\nWie auch an keiner Stelle belegt ist, da\xdf die Bev\xf6lkerung diese Hilfe \xfcberhaupt haben will, das aber nur nebenbei.\r\n\r\nEntweder der SPON Autor hat sich hier semantisch vertan, oder er hat sich als Unterst\xfctzer von Extremisten geouted.')

You should be scraping from this link instead of the one you provided because its where the actual comments are coming from and this way it allows you to escape the javascript on the URL you posted that's hiding the comments you want.
If you scrape from this link, getting ALL the comments should be simple because, conveniently, each of the pages here have the same "base" URL (http://www.spiegel.de/forum/politik/belagerte-stadt-syrien-die-islamisten-sind-aleppos-letzte-hoffnung-thread-495132-) and then the page number is added on at the end as 1.html, 2.html and so on.
This means in your code you will want to loop through each of these pages. Here is some pseudo code to help you get started.
def comment_spider(max_pages):
page = 1 #start on page 1
comments_list = []
while page <= max_pages:
url = 'http://www.spiegel.de/forum/politik/belagerte-stadt-syrien-die-islamisten-sind-aleppos-letzte-hoffnung-thread-495132-'+str(page)+'.html'
req = requests.get(url)
plain_text = req.text
soup = BeautifulSoup(plain_text, "lxml")
for items in soup.findAll('div', {'class': 'comment'}): #you need to get the actual information for this yourself
comment = items.get_text()
comments_list.append(comment)
page += 1
return comments_list
Then to call this function you would give it the total number of pages. E.g.
comment_spider(13)

Related

How to scrape and concate text in <br> tags with Beautiful Soup

I want to scrape parts of this site:
https://www.booklooker.de/B%C3%BCcher/Bastian-Sick+Der-Dativ-ist-dem-Genitiv-sein-Tod-Ein-Wegweiser-durch-den-Irrgarten-der-deutschen/id/A02ArCkS01ZZy
More accurate this part:
The html looks like this:
I tried this, but it doesn`t work:
from bs4 import BeautifulSoup
import requests
page = requests.get("https://www.booklooker.de/Bücher/Bastian-Sick+Der-Dativ-ist-dem-Genitiv-sein-Tod-Ein-Wegweiser-durch-den-Irrgarten-der-deutschen/id/A02ArCkS01ZZy")
souped = BeautifulSoup(page.content, "html.parser")
description = souped.find(class_="propertyItem_13").find_all("br").text
But that doesn`t work. Do you have any idea, how it is possible to scrape all the text?
Thanks in advance!!
If you just use the separator argument of get_text
print(souped.find(class_="propertyItem_13").get_text('\n').strip())
you'll get
Beschreibung:
Zustand siehe Bild. Zusätzlich: Ecken und Kanten leicht bestoßen. Seiten und Buchschnitt altersbedingt leicht verfärbt. Buchschnitt fleckig, siehe Bilder. Ab der Hälfte des Buches sind die Seiten oben leicht gebogen.
Die deutsche Sprache kennt zwar nur vier Fälle, dafür aber über tausend Zweifelsfälle. Heißt es Pizzas oder Pizzen? Gewinkt oder gewunken? Wann schreibt man Storys und wann Stories? Hat der Genitiv noch eine Chance — trotz des Dativs und dem Dativ zum Trotz?
Dieses Buch präsentiert die großartige SPIEGEL¬ONLINE-Kolumne »Zwiebelfisch«, die Woche für Woche Leser amüsiert, schockiert, belehrt und begeistert.
»Man spürt das Vergnügen, das der Umgang mit gutem Deutsch bereitet.« FAZ
»Wo der Duden nicht weiter weiß, weiß Sick Rat.« Saarbrücker Zeitung
Über das Buch:
Die oder das Nutella — diese Frage hat schon viele Gemüter am Frühstückstisch bewegt. Der, die, das — wieso, weshalb, warum? Ob Nutella nun weiblich oder sächlich ist, ist sicherlich keine Frage auf Leben und Tod, aber eine Antwort hätten wir schon gern. Wir? Ja, wir hilflos Verlorenen im Labyrinth der deutschen Sprache. Wir, die wir unsere liebe Not mit der deutschen Sprache haben. Und leichter, verständlicher oder zumindest nachvollziehbarer ist es nach der Rechtschreibreform auch nicht geworden.
In seinen hinreißend komischen und immer klugen Kolumnen bringt Bastian Sick Licht ins Dunkel der deutschen Sprachregelungen und sortiert den Sprachmüll. Ist der inflationären Verwendung von Binde-strichen noch Einhalt zu gebieten, angesichts von Spar-Plänen und Quoten-Druck? Versinken wir sprachlich gesehen nicht längst im Hagel der Apostrophe, wenn Känguru's plötzlich in den Weiten Australien's leben? Derlei Unsinn scheint nicht mehr aufhaltbar, wenn es nicht dieses Buch gäbe. Darauf zwei Espressis!
Der Autor:
Bastian Sick, Jahrgang 1965, Studium der Geschichtswissenschaft und Romanistik, Tätigkeit als Lektor und Übersetzer; von 1995-1998 Dokumentationsjournalist beim SPIEGEL-Verlag, ab Januar 1999 Mitarbeiter der Redaktion von SPIEGEL ONLINE. Seit Mai 2003 dort Autor der Kolumne »Zwiebelfisch«.
But if you want to target the <br>s specifically, you can copy this function into your code and use it like
print(html_to_text(souped.find(class_="propertyItem_13"))[1])
and that will give you
Beschreibung:Zustand siehe Bild. Zusätzlich: Ecken und Kanten leicht bestoßen. Seiten und Buchschnitt altersbedingt leicht verfärbt. Buchschnitt fleckig, siehe Bilder. Ab der Hälfte des Buches sind die Seiten oben leicht gebogen.
Die deutsche Sprache kennt zwar nur vier Fälle, dafür aber über tausend Zweifelsfälle. Heißt es Pizzas oder Pizzen? Gewinkt oder gewunken? Wann schreibt man Storys und wann Stories? Hat der Genitiv noch eine Chance — trotz des Dativs und dem Dativ zum Trotz?
Dieses Buch präsentiert die großartige SPIEGEL¬ONLINE-Kolumne »Zwiebelfisch«, die Woche für Woche Leser amüsiert, schockiert, belehrt und begeistert.
»Man spürt das Vergnügen, das der Umgang mit gutem Deutsch bereitet.« FAZ
»Wo der Duden nicht weiter weiß, weiß Sick Rat.« Saarbrücker Zeitung
Über das Buch:
Die oder das Nutella — diese Frage hat schon viele Gemüter am Frühstückstisch bewegt. Der, die, das — wieso, weshalb, warum? Ob Nutella nun weiblich oder sächlich ist, ist sicherlich keine Frage auf Leben und Tod, aber eine Antwort hätten wir schon gern. Wir? Ja, wir hilflos Verlorenen im Labyrinth der deutschen Sprache. Wir, die wir unsere liebe Not mit der deutschen Sprache haben. Und leichter, verständlicher oder zumindest nachvollziehbarer ist es nach der Rechtschreibreform auch nicht geworden.
In seinen hinreißend komischen und immer klugen Kolumnen bringt Bastian Sick Licht ins Dunkel der deutschen Sprachregelungen und sortiert den Sprachmüll. Ist der inflationären Verwendung von Binde-strichen noch Einhalt zu gebieten, angesichts von Spar-Plänen und Quoten-Druck? Versinken wir sprachlich gesehen nicht längst im Hagel der Apostrophe, wenn Känguru's plötzlich in den Weiten Australien's leben? Derlei Unsinn scheint nicht mehr aufhaltbar, wenn es nicht dieses Buch gäbe. Darauf zwei Espressis!
Der Autor:
Bastian Sick, Jahrgang 1965, Studium der Geschichtswissenschaft und Romanistik, Tätigkeit als Lektor und Übersetzer; von 1995-1998 Dokumentationsjournalist beim SPIEGEL-Verlag, ab Januar 1999 Mitarbeiter der Redaktion von SPIEGEL ONLINE. Seit Mai 2003 dort Autor der Kolumne »Zwiebelfisch«.
In this case , the difference is barely noticeable, but if you had more tags, you'd definitely notice that the first method spaces out everything, not just br; but if this is all you need it for, then the first method is much simpler.
You can just invoke the get_text() method to grab the entire description
from bs4 import BeautifulSoup
import requests
page = requests.get("https://www.booklooker.de/Bücher/Bastian-Sick+Der-Dativ-ist-dem-Genitiv-sein-Tod-Ein-Wegweiser-durch-den-Irrgarten-der-deutschen/id/A02ArCkS01ZZy")
souped = BeautifulSoup(page.content, "html.parser")
description = souped.find(class_="propertyItem_13").get_text(strip=True)
print(description)
Output:
Beschreibung:Zustand siehe Bild. Zusätzlich: Ecken und Kanten leicht bestoßen. Seiten und Buchschnitt altersbedingt
leicht verfärbt. Buchschnitt fleckig, siehe Bilder. Ab der Hälfte des Buches sind die Seiten oben leicht gebogen.Die deutsche Sprache kennt zwar nur vier Fälle, dafür aber über tausend Zweifelsfälle. Heißt es Pizzas oder Pizzen? Gewinkt oder gewunken? Wann schreibt man Storys und wann Stories? Hat der Genitiv noch eine Chance — trotz des Dativs und dem Dativ zum Trotz?Dieses Buch präsentiert die großartige SPIEGEL¬ONLINE-Kolumne »Zwiebelfisch«, die Woche für Woche Leser amüsiert, schockiert, belehrt und begeistert.»Man spürt das Vergnügen, das der Umgang mit gutem Deutsch bereitet.« FAZ»Wo der Duden nicht weiter weiß, weiß Sick Rat.« Saarbrücker ZeitungÜber das Buch:Die oder das Nutella
— diese Frage hat schon viele Gemüter am Frühstückstisch bewegt. Der, die, das — wieso, weshalb, warum? Ob Nutella nun weiblich oder sächlich ist, ist sicherlich keine Frage auf Leben und Tod, aber eine Antwort hätten wir schon gern. Wir? Ja, wir hilflos Verlorenen im Labyrinth der deutschen Sprache. Wir, die wir unsere liebe Not mit der deutschen Sprache haben. Und leichter, verständlicher oder zumindest nachvollziehbarer ist es nach der Rechtschreibreform auch nicht geworden.In seinen hinreißend komischen und immer klugen Kolumnen bringt Bastian Sick Licht ins Dunkel der
deutschen Sprachregelungen und sortiert den Sprachmüll. Ist der inflationären Verwendung von Binde-strichen noch Einhalt zu gebieten, angesichts von Spar-Plänen und Quoten-Druck? Versinken wir sprachlich gesehen nicht längst im Hagel der Apostrophe, wenn Känguru's plötzlich in den Weiten Australien's leben? Derlei Unsinn scheint nicht mehr aufhaltbar, wenn es nicht dieses Buch gäbe. Darauf zwei Espressis!Der Autor:Bastian Sick, Jahrgang 1965, Studium der Geschichtswissenschaft und Romanistik, Tätigkeit als Lektor und Übersetzer; von 1995-1998 Dokumentationsjournalist beim SPIEGEL-Verlag, ab Januar 1999 Mitarbeiter der Redaktion von SPIEGEL ONLINE. Seit Mai 2003 dort Autor der Kolumne »Zwiebelfisch«.
The text isn't in a <br> tag. You need to get text from PropertyValue
Your code doesn't return any results, because the <br> does not contain any tags. In fact, the tag does not support ending tags and can only be closed at opening: <br/>. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br
You might want to use the get_text method: https://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text

How to loop through website with BeautifulSoup?

I want to loop through this site and click on each book-element in the list. That means for this example first on:
Leo Lausemaus will nicht teilen Pixi ...
Löcher - Die Geheimnisse von Green Lake
...
In the marked part of the HTML file is an <a> thats href takes you to the page I want to go to first:
With BeautifulSoup I am able to extract that part of the code, where the <a> is.
from bs4 import BeautifulSoup
import requests
page = requests.get(https://www.booklooker.de/buecher-schnaeppchen)
souped = BeautifulSoup(page.content, "html.parser")
test = souped.find_all(class_="resultList_desc")
for i in test:
result = i.find('a')
Here is the result from the code:
<span class="artikeltitel notranslate" id="ID2365796060">Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus</span>
<span class="artikeltitel notranslate" id="ID2367131489">Löcher - Die Geheimnisse von Green Lake</span>
<span class="artikeltitel notranslate" id="ID2366667608">Die Wanderhure</span>
...
After that I want to click on each element in the list to get to the respective page that is stored in the href attribute.
This part is my problem. I don't know how to get to the wepages from this list.
You are close to your goal, simply iterate your list and .get('href') from your <a>s to request the detail pages - I worked with css selectors for convenience here to select each item and used the value of href attribute concatinated with the base url:
for e in soup.select('[id^="article_"]'):
soup_p = BeautifulSoup(requests.get('https://www.booklooker.de/'+e.a.get('href')).text)
The scraped contents ar stored as dict in a list
data.append({
'title':soup_p.h1.text
})
Example
from bs4 import BeautifulSoup
import requests
page = requests.get('https://www.booklooker.de/buecher-schnaeppchen')
soup = BeautifulSoup(page.content)
data = []
for e in soup.select('[id^="article_"]'):
soup_p = BeautifulSoup(requests.get('https://www.booklooker.de/'+e.a.get('href')).content)
d = {
'title':soup_p.h1.text,
'whatever': 'should be scraped'
}
d.update(dict([x.strip() for x in row.text.split(':', 1)] for row in soup_p.select('table.articleDetails tr:not(:has(td[colspan]))')))
data.append(d)
data
Output
[{'title': 'Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus – Buch gebraucht kaufen', 'whatever': 'should be scraped', 'Autor/in': 'Anna Casalis (Originaltext), Marco Campanella (Illustrationen)', 'Titel': 'Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus', 'ISBN': '9783551050519 (ISBN-10: 3551050511)', 'Zustand': 'wie neu', 'Verlag': 'Carlsen Verlag GmbH', 'Format': '10 x 10 cm', 'Seiten': '24', 'Gewicht': '20\xa0g', 'Ort': 'Hamburg', 'Auflage': '2. Auflage 2014', 'Erschienen': 'c2013', 'Einband': 'Taschenbuch', 'Sprache': 'Deutsch', 'Beschreibung': 'Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus, Carlsen Verlag GmbH c2013, 2. Auflage 2014, Minibuch, Originalfoto, sehr gut erhalten und fast wie neu mit minimalen Gebrauchsspuren, minimal angestoßen, keine Einträge, schneller Versand nach Zahlungseingang!', 'Verlagstext': 'Neun Jahre währt nun der Siegeszug von Leo Lausemaus in deutschen Kinderzimmern. Über eine Million Mal haben sich die Geschichten in dieser Zeit verkauft. Das Erfolgsgeheimnis: Leo Lausemaus greift die großen Themen des Kindergartenaltes auf und setzt sich dabei behutsam und liebevoll mit den typischen Konfliktsituationen auseinander.', 'Stichwörter': 'Ab 3 Jahren, Bilderbücher, Billige Bücher, Erste Bücher, Geschenke Kinder, Kinderbuch, Kindergeschichten, Minibuch, Pixie, Vorlesebuch', 'Bestell-Nr.': 'BN14133', 'Sparte': 'Bücher: Kinderbücher / Jugendbücher: Pixi-Bücher>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers'}, {'title': 'Löcher - Die Geheimnisse von Green Lake – Buch gebraucht kaufen', 'whatever': 'should be scraped', 'Autor/in': 'Louis Sachar', 'Titel': 'Löcher - Die Geheimnisse von Green Lake', 'ISBN': '9783407740984 (ISBN-10: 3407740980)', 'Zustand': 'wie neu', 'Verlag': 'Julius Beltz GmbH & Co. KG', 'Format': '187x125x17 mm', 'Seiten': '296', 'Gewicht': '295\xa0g', 'Einband': 'Taschenbuch', 'Sprache': 'Deutsch', 'Beschreibung': 'Tierfreier Nichtraucher-Haushalt Versand als Bücher-/Warensendung', 'Verlagstext': 'Schon der Anfang ist unglaublich: Stanley Yelnats geht nichts ahnend unter einer Brücke durch, als ihm die riesigen, übel riechenden Turnschuhe eines berühmten Baseballspielers auf den Kopf fallen. Und weil sein Vater an einem bahnbrechenden Recycling-Verfahren mit gebrauchten Turnschuhen arbeitet, hält Stanley die müffelnden Treter für ein Zeichen und nimmt sie mit. Pech, dass die Polizei schon nach dem Dieb sucht. Der Jugendrichter lässt Stanley die Wahl: Jugendgefängnis oder 18 Monate Camp Green Lake. Er entscheidet sich für das Camp. Die Hitze dort ist unerträglich, der Alltag hart, doch so schnell gibt Stanley nicht auf.', 'Angebot vom': '25.08.2022', 'Bestell-Nr.': 'BN0098', 'Sparte': 'Bücher: Kinderbücher / Jugendbücher: Jugendbuch allgemein>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers'},...]
data converted to DataFrame:
import pandas as pd
pd.DataFrame(data)
title
whatever
Autor/in
Titel
ISBN
Zustand
Verlag
Format
Seiten
Gewicht
Ort
Auflage
Erschienen
Einband
Sprache
Beschreibung
Verlagstext
Stichwörter
Bestell-Nr.
Sparte
Angebot vom
Lieferzeit
0
Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus – Buch gebraucht kaufen
should be scraped
Anna Casalis (Originaltext), Marco Campanella (Illustrationen)
Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus
9783551050519 (ISBN-10: 3551050511)
wie neu
Carlsen Verlag GmbH
10 x 10 cm
24
20 g
Hamburg
2. Auflage 2014
c2013
Taschenbuch
Deutsch
Leo Lausemaus will nicht teilen Pixi Buch Nr. 1987 Einzeltitel aus Pixi Serie 219 Leo Lausemaus, Carlsen Verlag GmbH c2013, 2. Auflage 2014, Minibuch, Originalfoto, sehr gut erhalten und fast wie neu mit minimalen Gebrauchsspuren, minimal angestoßen, keine Einträge, schneller Versand nach Zahlungseingang!
Neun Jahre währt nun der Siegeszug von Leo Lausemaus in deutschen Kinderzimmern. Über eine Million Mal haben sich die Geschichten in dieser Zeit verkauft. Das Erfolgsgeheimnis: Leo Lausemaus greift die großen Themen des Kindergartenaltes auf und setzt sich dabei behutsam und liebevoll mit den typischen Konfliktsituationen auseinander.
Ab 3 Jahren, Bilderbücher, Billige Bücher, Erste Bücher, Geschenke Kinder, Kinderbuch, Kindergeschichten, Minibuch, Pixie, Vorlesebuch
BN14133
Bücher: Kinderbücher / Jugendbücher: Pixi-Bücher>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers
nan
nan
1
Löcher - Die Geheimnisse von Green Lake – Buch gebraucht kaufen
should be scraped
Louis Sachar
Löcher - Die Geheimnisse von Green Lake
9783407740984 (ISBN-10: 3407740980)
wie neu
Julius Beltz GmbH & Co. KG
187x125x17 mm
296
295 g
nan
nan
nan
Taschenbuch
Deutsch
Tierfreier Nichtraucher-Haushalt
Schon der Anfang ist unglaublich: Stanley Yelnats geht nichts ahnend unter einer Brücke durch, als ihm die riesigen, übel riechenden Turnschuhe eines berühmten Baseballspielers auf den Kopf fallen. Und weil sein Vater an einem bahnbrechenden Recycling-Verfahren mit gebrauchten Turnschuhen arbeitet, hält Stanley die müffelnden Treter für ein Zeichen und nimmt sie mit. Pech, dass die Polizei schon nach dem Dieb sucht. Der Jugendrichter lässt Stanley die Wahl: Jugendgefängnis oder 18 Monate Camp Green Lake. Er entscheidet sich für das Camp. Die Hitze dort ist unerträglich, der Alltag hart, doch so schnell gibt Stanley nicht auf.
nan
BN0098
Bücher: Kinderbücher / Jugendbücher: Jugendbuch allgemein>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers
25.08.2022
nan
2
Die Wanderhure – Buch gebraucht kaufen
should be scraped
Iny Lorentz
Die Wanderhure
3426629348 (ISBN-13: 9783426629345)
leichte Gebrauchsspuren
Knaur Taschenbuch
190x125x39 mm
624
452 g
nan
nan
2005
Taschenbuch
Deutsch
Das Buch ist in einem guten Zustand und weist nur leichte Gebrauchsspuren auf. "Konstanz im Jahre 1410: Als Graf Ruppert um die Hand der schönen Bürgerstochter Marie anhält, kann ihr Vater der schönen Bürgerstochter Marie abhält, kann ihr Vater sein Glück kaum fassen. Er ahnt nicht, dass es dem adeligen Bewerber nur um das Vermögen seiner zukünftigen Frau geht und dass er dafür vor keinem Verbrechen zurückschreckt."Privatverkauf daher kein Rückgaberecht
Eine Frau kämpft in der grausamen Welt des Mittelalters um ihr Glück. Konstanz im Jahre 1410: Als Graf Ruppert um die Hand der schönen Bürgerstochter Marie anhält, kann ihr Vater sein Glück kaum fassen. Er ahnt nicht, dass es dem adligen Bewerber nur um das Vermögen seiner künftigen Frau geht und dass er dafür vor keinem Verbrechen zurückscheut. Marie und ihr Vater werden Opfer einer gemeinen Intrige, die das Mädchen zur Stadt hinaustreibt. Um zu überleben, muss sie ihren Körper verkaufen. Aber Marie gibt nicht auf ... Alle Bände der historischen Bestseller-Reihe rund um Marie Adler von Iny Lorentz in chronologischer Reihenfolge:• Die Wanderhure• Die Kastellanin• Das Vermächtnis der Wanderhure• Die List der Wanderhure• Die Wanderhure und die Nonne• Die Wanderhure und der orientalische Arzt• Die Tochter der Wanderhure• Töchter der Sünde• Die Wanderhure und der orientalische Arzt
Huren, Intrige, Konstanz, Marie Schärer, Marie Adler, Bürgerstochter, Ruppertus Splendidus, Grafensohn, Verdächtigung, Hübschlerin, Wanderschaft, Wanderhure, Konstanzer Konzil, Rache, Aufstand, Iny Lorentz Romane, historische Romane Mittelalter
BN00214
Bücher: Romane / Erzählungen: Historische Romane>> Mehr von diesem Verkäufer in dieser Sparte>> Mehr von diesem Verkäufer von diesem Autor>> Alle Sparten dieses Verkäufers
21.08.2022
nan

pandas read_csv() with BOM fails with "unexpected end of file"

I receive a BOM-encoded file as an http request parameter and I want to parse it using read_csv but I get the following error when using engine='c':
{ParserError}Error tokenizing data. C error: EOF inside string starting at row 8
If using engine='python', this is what I get:
{ParserError}unexpected end of data
This is the code:
df = pd.read_csv(BytesIO(file_data), engine='c')
I tried doing decode('utf-8-sig') and then encode('utf-8') but it doesn't work and I get the same error.
How to fix this?
Attached file below:
,source,reference,Yandex Cloud Translate API v2 (stock)
0,"Find links about healthcare / medicines, hospitals in Budapest and a lot more in The links of expatriation.","Finden Sie Verbindungen gesundheit / krankenhaus, apotheke und arzneimittel in Budapest und vieles mehr unter Verzeichnis für Expatriation.","Finden Sie links über Gesundheitswesen / Medikamente, Krankenhäuser in Budapest und vieles mehr in den links von expatriation."
1,"Important for formal obligations for visitors in Schorndorf: Health insurance It's also necessary, that your visitor /guest issues a certificate of a health insurance to the Ausländeramt in Schorndorf.","Wichtig bei der Verpflichtungserklärung für Besucher in Schorndorf: Krankenversicherung Darüber hinaus ist es regelmäßig erforderlich, dass Ihr Gast den Abschluss einer Auslandskrankenversicherung der/dem Ausländeramt in Schorndorf nachweist.","Wichtig für formelle Verpflichtungen für Besucher in Schorndorf: Krankenversicherung es ist auch notwendig, dass Ihr Besucher / Gast beim Ausländeramt in Schorndorf eine krankenversicherungsbescheinigung ausstellt."
2,"If you think you are having any difficulty with your hearing, you should visit your doctor or healthcare professional as soon as possible.","Wenn Sie Schwierigkeiten mit dem Gehör haben, dann sollten Sie so schnell wie möglich einen Arzt oder Hörgeräteakustiker aufsuchen.","Wenn Sie denken, dass Sie Schwierigkeiten mit Ihrem Gehör haben, sollten Sie Ihren Arzt oder Arzt so schnell wie möglich besuchen."
3,This most important fair on the African continent for scientific and medical instruments took place in Johannesburg in South Africa in the Kyalami Exhibition Centre Midrand.,Diese wichtigste Messe auf dem afrikanischen Kontinent für wisschenschaftliche und medizinische Geräte fand in Johannesburg in Südafrika im Kyalami Exhibition Centre Midrand statt.,Diese wichtigste Messe auf dem afrikanischen Kontinent für wissenschaftliche und medizinische Instrumente fand in Johannesburg in Südafrika im Kyalami Exhibition Centre Midrand statt.
4,"Generally these negative effects do not occur; nevertheless, an improper dose of Semenax consumption could bring about some undesirable health concerns.",Normalerweise nicht passieren diese Nebenwirkungen; Dennoch kann eine falsche Dosis von Semenax Verbrauch zu einigen unerwünschten gesundheitlichen Bedenken führen.,Im Allgemeinen treten diese negativen Effekte nicht auf; dennoch könnte eine unsachgemäße Dosis von Semenax-Konsum zu einigen unerwünschten gesundheitlichen Bedenken führen.
5,"We do not accept any other definition that infers abortion to be within this term; and furthermore we understand that any care, information, policies or any other services pertaining to sexual and reproductive health similarly exclude abortion.","Wir akzeptieren keine andere Definition, die die Abtreibung in diesen Terminus einschließt; und weiter gehen wir davon aus, dass jede Betreuung, Information, Maßnahme oder andere Dienstleistung im Zusammenhang mit sexueller und reproduktiver Gesundheit ebenfalls die Abtreibung ausschließen.","Wir akzeptieren keine andere definition, die Abtreibung in diesem Begriff bezeichnet; und wir verstehen darüber hinaus, dass jegliche Sorge, information, Politik oder andere Dienstleistungen im Zusammenhang mit sexueller und reproduktiver Gesundheit Abtreibung ebenfalls ausschließen."
6,"So far, studies on the long-term health effects of the exposure of this population have not been undertaken.The total number of people affected by radioactive contamination may never be known.","Studien bezüglich der gesundheitlichen Auswirkungen der radioaktiven Verseuchung wurden bislang nicht durchgeführt.Wie viele Menschen von der Strahlung am Schluss betroffen sein werden, wird wohl nie bekannt werden.","Bisher wurden keine Studien über die langfristigen gesundheitlichen Auswirkungen der Exposition dieser Bevölkerung durchgeführt.Wie viele Menschen von der radioaktiven Kontamination betroffen sind, ist nicht bekannt."
7,"And people on the lower end of the economic spectrum tend to have a lower health status, hence lower blood quality with a higher risk for diseases like hepatitis.","Und Personen aus dem unteren Ende des ökonomischen Spektrums tendieren dazu, einen schlechteren Gesundheitszustand zu haben und damit eine geringere Blutqualität mit einem höheren Risiko für Krankheiten wie Hepatitis.","Und Menschen am unteren Ende des ökonomischen Spektrums neigen dazu, einen niedrigeren Gesundheitsstatus zu haben, daher niedrigere blutqualität mit einem höheren Risiko für Krankheiten wie hepatitis
The error identifies an actual problem. Besides, BOM isn't an encoding, it's just a few bytes at the start of the file that specify the type of UTF encoding used.
Text fields are quoted but the last one has no closing quote. Parsing would fail even if the data was a string in memory:
csv=''',source,reference,Yandex Cloud Translate API v2 (stock)
0,"Find links about healthcare / medicines, hospitals in Budapest and a lot more in The links of expatriation.","Finden Sie Verbindungen gesundheit / krankenhaus, apotheke und arzneimittel in Budapest und vieles mehr unter Verzeichnis für Expatriation.","Finden Sie links über Gesundheitswesen / Medikamente, Krankenhäuser in Budapest und vieles mehr in den links von expatriation."
1,"Important for formal obligations for visitors in Schorndorf: Health insurance It's also necessary, that your visitor /guest issues a certificate of a health insurance to the Ausländeramt in Schorndorf.","Wichtig bei der Verpflichtungserklärung für Besucher in Schorndorf: Krankenversicherung Darüber hinaus ist es regelmäßig erforderlich, dass Ihr Gast den Abschluss einer Auslandskrankenversicherung der/dem Ausländeramt in Schorndorf nachweist.","Wichtig für formelle Verpflichtungen für Besucher in Schorndorf: Krankenversicherung es ist auch notwendig, dass Ihr Besucher / Gast beim Ausländeramt in Schorndorf eine krankenversicherungsbescheinigung ausstellt."
2,"If you think you are having any difficulty with your hearing, you should visit your doctor or healthcare professional as soon as possible.","Wenn Sie Schwierigkeiten mit dem Gehör haben, dann sollten Sie so schnell wie möglich einen Arzt oder Hörgeräteakustiker aufsuchen.","Wenn Sie denken, dass Sie Schwierigkeiten mit Ihrem Gehör haben, sollten Sie Ihren Arzt oder Arzt so schnell wie möglich besuchen."
3,This most important fair on the African continent for scientific and medical instruments took place in Johannesburg in South Africa in the Kyalami Exhibition Centre Midrand.,Diese wichtigste Messe auf dem afrikanischen Kontinent für wisschenschaftliche und medizinische Geräte fand in Johannesburg in Südafrika im Kyalami Exhibition Centre Midrand statt.,Diese wichtigste Messe auf dem afrikanischen Kontinent für wissenschaftliche und medizinische Instrumente fand in Johannesburg in Südafrika im Kyalami Exhibition Centre Midrand statt.
4,"Generally these negative effects do not occur; nevertheless, an improper dose of Semenax consumption could bring about some undesirable health concerns.",Normalerweise nicht passieren diese Nebenwirkungen; Dennoch kann eine falsche Dosis von Semenax Verbrauch zu einigen unerwünschten gesundheitlichen Bedenken führen.,Im Allgemeinen treten diese negativen Effekte nicht auf; dennoch könnte eine unsachgemäße Dosis von Semenax-Konsum zu einigen unerwünschten gesundheitlichen Bedenken führen.
5,"We do not accept any other definition that infers abortion to be within this term; and furthermore we understand that any care, information, policies or any other services pertaining to sexual and reproductive health similarly exclude abortion.","Wir akzeptieren keine andere Definition, die die Abtreibung in diesen Terminus einschließt; und weiter gehen wir davon aus, dass jede Betreuung, Information, Maßnahme oder andere Dienstleistung im Zusammenhang mit sexueller und reproduktiver Gesundheit ebenfalls die Abtreibung ausschließen.","Wir akzeptieren keine andere definition, die Abtreibung in diesem Begriff bezeichnet; und wir verstehen darüber hinaus, dass jegliche Sorge, information, Politik oder andere Dienstleistungen im Zusammenhang mit sexueller und reproduktiver Gesundheit Abtreibung ebenfalls ausschließen."
6,"So far, studies on the long-term health effects of the exposure of this population have not been undertaken.The total number of people affected by radioactive contamination may never be known.","Studien bezüglich der gesundheitlichen Auswirkungen der radioaktiven Verseuchung wurden bislang nicht durchgeführt.Wie viele Menschen von der Strahlung am Schluss betroffen sein werden, wird wohl nie bekannt werden.","Bisher wurden keine Studien über die langfristigen gesundheitlichen Auswirkungen der Exposition dieser Bevölkerung durchgeführt.Wie viele Menschen von der radioaktiven Kontamination betroffen sind, ist nicht bekannt."
7,"And people on the lower end of the economic spectrum tend to have a lower health status, hence lower blood quality with a higher risk for diseases like hepatitis.","Und Personen aus dem unteren Ende des ökonomischen Spektrums tendieren dazu, einen schlechteren Gesundheitszustand zu haben und damit eine geringere Blutqualität mit einem höheren Risiko für Krankheiten wie Hepatitis.","Und Menschen am unteren Ende des ökonomischen Spektrums neigen dazu, einen niedrigeren Gesundheitsstatus zu haben, daher niedrigere blutqualität mit einem höheren Risiko für Krankheiten wie hepatitis'''
Trying to read this throws :
from io import StringIO
import pandas as pd
df=pd.read_csv(StringIO(csv))
>>> ...
>>> pandas.errors.ParserError: Error tokenizing data. C error: EOF inside string starting at row 8
The last field in row 8 has a start but no end quote :
"Und Menschen am unteren Ende des ökonomischen Spektrums neigen dazu, einen niedrigeren Gesundheitsstatus zu haben, daher niedrigere blutqualität mit einem höheren Risiko für Krankheiten wie hepatitis
Once the missing quote is added, the file can be parsed:
>>> df=pd.read_csv(StringIO(csv+'"')
>>> df.columns
Index(['Unnamed: 0', 'source', 'reference',
'Yandex Cloud Translate API v2 (stock)'],
dtype='object')
Another quirk is that the first column has no name. Pandas reads it as Unnamed: 0.
The unnamed column can be used as an index instead, by specifying it in index_col
>>> df=pd.read_csv(StringIO(csv+'"'),index_col=0)
>>> df.columns
Index(['source', 'reference', 'Yandex Cloud Translate API v2 (stock)'], dtype='object')

Python - Split cell with long text through word delimiters and add that word delimiter to another column to define what the split text is

I have an Excel or csv with One column containing identifiers and another one with text. Those cells with text contain 0-5000 chars of text. Now there are titles in those cells where you can split on such as "Usage:". I would like to find a solution where i can split the text in those cells and make columns with those titles where it got split. Or split the cells and make rows with those different types of text and just add a type column with the keyword on which it got split. Also each cell has a different structure so usage can be before something else in one cell and after something else in another cell.
import re
import pandas as pd
import requests
import shutil
workbook = pd.read_excel('Ixxilon0-5000.xlsx')
workbook.head()
teller = 0
df = pd.DataFrame(workbook)
length = len(df)
splitters = ['Anwendung:', 'Zusammensetzung:', 'Anwendungsgebiete:', 'Besondere Hinweise zur Anwendung im Kindesalter:',
'Wechselwirkungen mit anderen Mitteln:', 'Allgemeiner Hinweis:',
'Hinweise für den Fall der Überdosierung:', 'Nebenwirkungen:',
'Wirkstoff:', 'Ampulle enthält:', 'Nebenwirkungen:', 'Vorsichtsmaßnahmen für die Anwendung:',
'Sonstiger Bestandteil:', 'Packungsgrößen:', 'Gegenanzeigen:', 'Dosierung und Art der Anwendung:',
'Dauer der Behandlung', 'GEBRAUCHSINFORMATION:', 'Sonstige Bestandteile:'
]
while teller < length:
teller = teller + 1
text = workbook['text1'].iloc[teller]
txtString = str(text)
txtSplitted = re.split('|'.join(r'\b{}\b'.format(x) for x in splitters), txtString)
# txtSplitted = re.split('Zusammensetzung:', txtString)
# print(txtSplitted)
def custom_split(sepr_list, str_to_split):
regular_exp = '|'.join(map(re.escape, sepr_list))
return re.split(regular_exp, str_to_split)
print(custom_split(splitters, txtString))
This is what i'm working with so far.
Definitely not a Python wizard so feel free to school me.
Example cell:
<b>Wichtige Hinweise (Pflichtangaben):<br /><br />15 Rubus Spezial, Mischung </b> Anwendungsgebiete: Registriertes homöopathisches Arzneimittel, daher ohne Angabe einer therapeutischen Indikation. <b>Warnhinweis: Enthält 52,0 Vol.-% Alkohol!</b><br /><br /><b>Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und fragen Sie Ihren Arzt oder Apotheker.</b><br /><br /><br />GEBRAUCHSINFORMATION: INFORMATION FÜR DEN ANWENDER<br /><br />15 Rubus Spezial, Mischung zum Einnehmen<br />Homöopathisches Arzneimittel<br /><br />Liebe Patientin, lieber Patient! Bitte lesen Sie folgende Gebrauchsinformation aufmerksam, weil sie wichtige Informationen darüber enthält, was Sie bei der Anwendung dieses Arzneimittels beachten sollen. Wenden Sie sich bei Fragen bitte an Ihren Arzt oder Apotheker.<br /><br />Anwendungsgebiete:<br />Registriertes homöopathisches Arzneimittel, daher ohne Angabe einer therapeutischen Indikation. Hinweis: Bei während der Anwendung des Arzneimittels fortdauernden Krankheitssymptomen ist medizinischer Rat einzuholen.<br /><br />Gegenanzeigen:<br />Wann dürfen Sie 15 Rubus Spezial nicht einnehmen?<br />Wegen des Alkoholgehaltes soll 15 Rubus Spezial bei Alkoholkranken nicht angewendet werden.<br /><br />Wann dürfen Sie 15 Rubus Spezial erst nach Rücksprache mit dem Arzt anwenden?<br />Wegen des Alkoholgehaltes soll 15 Rubus Spezial bei Leberkranken, Epileptikern und Personen mit organischen Erkrankungen des Gehirns nur nach Rücksprache mit dem Arzt angewendet werden.<br /><br />Vorsichtsmaßnahmen für die Anwendung und Warnhinweise:<br />Warnhinweis: Dieses Arzneimittel enthält 52,0 Vol.-% Alkohol. Als maximale Tagesgabe nach der Dosierungsanleitung werden bis zu 0,33 g Alkohol zugeführt. Ein gesundheitliches Risiko besteht u.a. bei Leberkranken, Alkoholkranken, Epileptikern, Hirnkranken oder Hirngeschädigten sowie für Schwangere und Kinder. Die Wirkung anderer Arzneimittel kann beeinträchtigt oder verstärkt werden.<br /><br />Was müssen Sie in der Schwangerschaft und Stillzeit beachten?<br />Da keine ausreichend dokumentierten Erfahrungen zur Anwendung in der Schwangerschaft und Stillzeit vorliegen, sollte das Arzneimittel nur nach Rücksprache mit dem Arzt angewendet werden.<br /><br />Besondere Hinweise zur Anwendung im Kindesalter:<br />Zur Anwendung dieses Arzneimittels bei Kindern liegen keine ausreichend dokumentierten Erfahrungen vor. Es soll deshalb bei Kindern unter 12 Jahren nicht angewendet werden.<br /><br />Wechselwirkungen mit anderen Mitteln:<br />Keine bekannt. Allgemeiner Hinweis: Die Wirkung eines homöopathischen Arzneimittels kann durch allgemein schädigende Faktoren in der Lebensweise und durch Reiz- und Genussmittel ungünstig beeinflusst werden. Falls Sie sonstige Arzneimittel einnehmen, fragen Sie ihren Arzt.<br /><br />Wie lange sollten Sie 15 Rubus Spezial anwenden?<br />Bei Besserung der Beschwerden ist die Häufigkeit der Einnahme zu reduzieren. Auch homöopathische Arzneimittel sollten nicht über längere Zeit ohne ärztlichen Rat eingenommen werden.<br /><br />Nebenwirkungen:<br />Keine bekannt. Hinweis: Bei der Einnahme eines homöopathischen Arzneimittels können sich die vorhandenen Beschwerden vorübergehend verschlimmern (Erstverschlimmerung). In diesem Fall sollte medizinischer Rat eingeholt werden.<br /><br />

Spliting the text with regex in python

I have a sample from a text: The whole text is here: pastebin
Dr. Trischler (FDP): Meine Damen und Herren!
Ich möchte von vornherein als einer der Flücht-
lingsvertreter in diesem Hause meiner Freude
darüber Ausdruck verleihen, daß die Anträge zur
Linderung der Not der Flüchtlinge aus allen Par-
teien kommen, daß sich hier Regierung und Oppo-
sition anscheinend einig in der Auffassung sind,
daß dieses Problem ein allgemeines ist, daß wir
alle gemeinsam zusammenarbeiten müssen. Weil
ich weiß, daß hier das nötige Verständnis vor-
handen ist, will ich mich auch aller Ausführungen
enthalten, die irgendwie allgemeiner Natur sind.
Ich will nicht über die Notwendigkeit der Linde-
rung der Not usw. sprechen, sondern ich will zu
einzelnen Fragen, die in diesen verschiedenen An-
trägen angeschnitten sind, kurz Stellung nehmen.
Die Frage des gerechten Ausgleichs. Auch meine
Fraktion ist hier selbstverständlich für einen ge-
rechten, gleichmäßigen Ausgleich über alle Länder
hinweg. Auch wir lehnen wie die Mehrheit in
diesem Hause es ab, daß man unter den Flücht-
lingen irgendwelche Gruppierungen macht und
daß für die einzelnen Gegenden die oder jene be-
vorzugt behandelt werden sollen
Zur Frage der Freiwilligkeit: Ich habe das Ge-
fühl, daß mein Vorredner von zweierlei Frei-
willigkeit gesprochen hat. Einmal sehe ich die
Frage der Freiwilligkeit vom Standpunkt der Hei-
matvertriebenen aus. In dieser Frage sind wir der
Meinung, daß keinerlei Zwang angewendet werden
darf. Wir kennen aus der Vergangenheit auch ver-
schiedenen „freiwilligen" Zwang; auch dies würden
wir ablehnen. Wir können es den Menschen nicht
zumuten, daß sie noch einmal gezwungen werden,
von dort wieder wegzugehen, wo sie bereits
o einigermaßen eine neue Heimstätte gefunden ha-
ben. — Die zweite Freiwilligkeit ist die Frage der
Freiwilligkeit der Länder, wieweit sie diesen Aus-
gleich für sich wollen oder nicht. Hier können wir
nun vorerst ruhig abwarten, wie weit die eigene
Bereitwilligkeit gehen wird und wieweit es not-
wendig sein müßte, den Artikel 119 des Grund-
gesetzes in Anwendung zu bringen. Jedenfalls
nehmen wir zu diesem Ausgleich den Standpunkt
ein, daß es notwendig ist, daß der Ausgleich
erfolgt und ausreichend durchgeführt wird.
Das, was wir jetzt hören, es sei geplant, bis Ende
1950 300 000 umzusiedeln, ist bestimmt keine Lö-
sung. Denn wir haben von den Vorrednern zu die-
sem Thema bereits gehört, daß soundso viele Flücht-
linge wieder neu zuströmen, so daß es Ende 1950
wahrscheinlich so aussehen wird, daß sich praktisch
gar nichts geändert hat, weil dieselben Länder, die
Flüchtlinge abgeben, sehr bald wieder mindestens
ebenso viele aufgenommen haben werden.
Präsident Dr. Köhler: Bevor wir fortfahren, darf
ich zunächst diesen Antrag zur Geschäftsordnung
zur Aussprache stellen. Wird das Wort zur Un-
terstützung des Antrags auf vorläufige Aussetzung
der ersten Beratung der Drucksache Nr. 17 ge-
wünscht? — Bitte, Herr Abgeordneter Kiesinger.
I want to split the text in to sections for every Speaker. Thats mean, if I found a Speaker, the section until the next speaker is the text from the previous Speaker.
A Speaker is e.g.: Dr. Trischler (FDP): or the Präsident Dr. Köhler:
And I want to split the text, before the matched Speaker. So I can separate the text to each speaker.
My Code:
def regex_tokenizer(text):
regex = r"(\s+(?=(Vizepräsident|Präsident)([\s])([A-Z])([A-z])........:))|(\s+(?=([A-Z]+[a-z]*)([\s]*)(\([A-Z]*\))))"
splitedtext = re.split(regex, text)
return splitedtext
def search(splitedtext):
searched = [s for s in splitedtext if "Bonn" in s]
print(search())
For a search in the splitted list I get the error:
Traceback (most recent call last):
File "/Usersx/check_pdfs.py", line 59, in <module>
search(splitedtext=regex_tokenizer(text=read_file()))
File "/Usersx/check_pdfs.py", line 46, in search
searched = [s for s in splitedtext if "Bonn" in s]
File "x/check_pdfs.py", line 46, in <listcomp>
searched = [s for s in splitedtext if "Bonn" in s]
TypeError: argument of type 'NoneType' is not iterable
I cannot find the problem. Is the problem on my regex? or on the regex method? or on the search list comprehension?
You have an over complicated regex. Try this instead:
regex = r"(^.*:)"
this will result in the following:
['', 'Dr. Trischler (FDP):', ' Meine Damen und Herren! ...', ...]
Please check if this Regex works for you:
((?:Dr\.|Vizepräsident|Präsident).*(?<!cid)):((?:(?!Dr\.|Vizepräsident|Präsident).*\n)*)
Demo

Categories

Resources