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
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')
I want to parse an XML with CDATA sections and then output it again with the CDATA sections.
How to achieve it?
For example, the input could be like this, a strings.xml file like this:
<resources>
<string name="card_alerts"><![CDATA[<div id="card_alerts" aria-labelledby="card alerts"><h2>Kartenwarnmeldungen</h2><section id="card_alerts_text_messages"><h3>1. SMS</h3><p>1.1 Um Kartenwarnmeldungen per SMS abonnieren zu können, müssen Sie zustimmen, dass SMS an Ihre Mobiltelefonnummer gesendet werden dürfen, einschliesslich einer abschliessenden Bestätigung, wenn Sie den Dienst kündigen, gemäss unseren Geschäftsbedingungen und der Datenschutzrichtlinie. <b>%1$s</b>. Die Nachrichtenfrequenz variiert. T‑Mobile haftet nicht für verzögerte oder nicht übertragene Nachrichten. Für Nachrichten und die Datenübertragung können Standardgebühren anfallen.</p></section><section id="card_alerts_supported_carriers"><h3>2. SUPPORTED CARRIERS</h3><p>2.1 Zu den unterstützten Betreibern zählen: ACS Wireless, Alltel (einschliesslich Midwest), AT&T, Bluegrass, Boost, Cellcom, Cellular One of East Central Illinois, Cellular South, Centennial, Cincinnati Bell, Cox Wireless, East Kentucky Network, GCI Communications, Immix Wireless, Inland Cellular, MetroPCS, Nex-Tech Wireless, nTelos, Revol Wireless, Rural Cellular Corporation, Sprint, T-Mobile® USA (einschliesslich Suncom), Thumb Cellular, U.S. Cellular®, United, MetroPCS, Verizon Wireless, Virgin Mobile USA und WCC oder WCW (West Central Wireless).</p></section></div>]]></string>
<string name="software_license"><![CDATA[<b>SOFTWARELIZENZ</b>]]></string>
<string name="software_application_usage"><![CDATA[
<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Disclosures</title><style type="text/css"> h1, h2, h3, p { font-family: sans-serif; color: #333333; } h1{ font-size: 1.5em; } h2{ font-size: 1.248em; } h3, p { font-size: 0.998em; } .widgetMarginHelper{ margin : 1em; } </style></head><body class="widgetMarginHelper"><div><h1 id="disclosures_heading">%1$s</h1></div><div><p id="disclosures_legal_intro">%2$s</p></div><div id="software_license_content" aria-labelledby="software license"><div><h2 id="software_license_heading">%3$s</h2></div><section id="software_application_usage">><h3>1. NUTZUNG DER SOFTWAREANWENDUNG</h3><p>1.1 Ihr Dienstanbieter gewährt Ihnen hiermit eine beschränkte, persönliche, widerrufbare, nicht abtretbare, nicht übertragbare und nicht exklusive Lizenz, die Softwareanwendung (einschließlich zukünftiger Updates oder Upgrades, die Ihnen gelegentlich unter der Voraussetzung zur Verfügung gestellt werden, dass Sie anerkennen, dass solche Aktualisierungen oder Upgrades zusätzlichen Bedingungen unterliegen können) gemäß den nachfolgenden Verpflichtungen und Einschränkungen zu nutzen:</p><p>1.1.1 Sie dürfen die Anwendung nur auf einem einzigen registrierten Mobiltelefon nutzen, das sich in Ihrem Besitz oder unter Ihrer Kontrolle befindet. Sie werden jedes zusätzliche oder Ersatz-Mobiltelefon separat registrieren müssen;</p><p>1.1.2 Sie dürfen die Anwendung ausschließlich zum Erhalt der mobilen Dienste nutzen, und zu keinerlei anderem Zweck;</p><p>1.1.3 Die Anwendung wird ausschließlich für Ihre persönliche Nutzung an Sie lizenziert, und es ist Ihnen untersagt, anderen Personen jedwede Nutzungsrechte oder anderweitigen Rechte bezüglich der Anwendung zu übertragen, zu verleihen, weiterzuverbreiten, zu gewähren oder Unterlizenzen zu erteilen;</p><p>1.1.4 Sie dürfen die Softwareanwendung in keinerlei Form ganz oder teilweise kopieren oder vervielfältigen (sofern nicht ausdrücklich durch diese Lizenz erlaubt), dekompilieren, nachkonstruieren, zerlegen, modifizieren, als Grundlage abgeleiteter Werke verwenden, oder versuchen, ihren Quellcode abzuleiten;</p><p>1.1.5 Sie dürfen die Anwendung in keiner Weise verwenden, die die Anwendung (oder jedwede Server oder Netzwerke, die mit der Anwendung verbunden oder verknüpft sind) schädigen, deaktivieren, überlasten oder beeinträchtigen könnte, oder die für eine dritte Partei die Nutzung der und/oder die Freude an der Anwendung störend beeinflussen könnte;</p><p>1.1.6 Sie dürfen keinerlei Urheberrechtsvermerke entfernen oder modifizieren, die der Softwareanwendung beigefügt oder in ihr enthalten sind, und Sie erkennen an und stimmen zu, dass im Rechtsverhältnis zwischen Ihnen und uns die Softwareanwendung unser Eigentum verbleibt, und dass Sie keinerlei Rechte, Rechtstitel oder Ansprüche auf die Anwendung haben, sei es durch Implikation, Rechtsverwirkung oder anderweitig, mit Ausnahme der in dieser Lizenz dargelegten beschränkten Rechte;</p><p>1.1.7 Sie dürfen die Anwendung in keiner Weise zum Zwecke nutzen, testen oder anderweitig verwenden, ein Verfahren oder eine Software zu entwickeln oder zu implementieren, deren Ziel es ist, die Funktionalität der Anwendung (oder jedweder Server oder Netzwerke, die mit der Anwendung verbunden oder verknüpft sind) zu überwachen oder zu beeinträchtigen (einschließlich des Abfangens von Daten);</p><p>1.1.8 Sie dürfen die Sicherheitsfunktionen der Anwendung nicht vorsätzlich beeinträchtigen oder umgehen;</p><p>1.1.9 Sie stimmen auch zu, dass Sie die Anwendung für keine Zwecke, die durch das Recht der Vereinigten Staaten oder durch anwendbares Recht untersagt sind, nutzen werden;</p><p>1.1.10 Bei jedweder Beendigung der mobilen Dienste verfallen alle Rechte, die Ihnen bezüglich der Softwareanwendung gewährt wurden, unmittelbar; und</p><p>1.1.11 Jedwede Open-Source-Software, die der Anwendung möglicherweise beigefügt ist, wird Ihnen gemäß der entsprechenden Open-Source-Lizenzvereinbarung bereitgestellt und nicht gemäß dieser Lizenz, und Ihr Dienstanbieter lehnt jede Haftung bezüglich jedweder bereitgestellten Open-Source-Lizenz ab, wie nachfolgend angegeben.</p></section><section id="software_license_termination"><h3>2. BEENDIGUNG DER SOFTWARELIZENZ</h3><p>2.1 Die Softwarelizenz gilt, sobald Sie die Softwarelizenz akzeptieren oder die Softwareanwendung installieren (je nachdem, was zuerst eintrifft), und bis Sie gemäß den folgenden Bestimmungen oder anderweitig in Übereinstimmung mit der Softwarelizenz beendet wird.</p><p>2.2 Die Softwarelizenz wird automatisch gekündigt, wenn Sie die mobilen Dienste abbestellen und/oder die Softwareanwendung deinstallieren, oder falls Sie diese Lizenz oder die Geschäftsbedingungen der mobilen Dienste nicht erfüllen.</p><p>2.3 Nach Beendigung der Softwarelizenz (aus jedwedem Grund) müssen Sie die Softwareanwendung deinstallieren und alle Kopien der Softwareanwendung einschließlich all ihrer Komponenten, die sich in Ihrem Besitz oder Ihrer Kontrolle befinden, vernichten.</p></section><section id="disclaimer_of_warranty"><h3>3. GEWÄHRLEISTUNGSAUSSCHLUSS</h3><p>3.1 SIE ERKENNEN AN UND STIMMEN ZU, DASS DIE ANWENDUNG, GGF. BEIGEFÜGTE OPEN-SOURCE-LIZENZEN SOWIE DIE MOBILEN DIENSTE IN IHRER VORHANDENEN FORM UND VERFÜGBARKEIT BEREITGESTELLT WERDEN, MIT ALLEN FEHLERN UND OHNE JEGLICHE GEWÄHRLEISTUNG. IHR DIENSTANBIETER SOWIE SEINE TOCHTERUNTERNEHMEN, VERBUNDENEN UNTERNEHMEN, MITARBEITER, BEAUFTRAGTEN, FÜHRUNGSKRÄFTE UND GESCHÄFTSFÜHRER SCHLIESSEN HIERMIT JEDWEDE (AUSDRÜCKLICHEN, IMPLIZIERTEN ODER GESETZLICHEN) GEWÄHRLEISTUNGEN BEZÜGLICH DER ANWENDUNG, GGF. BEIGEFÜGTER OPEN-SOURCE-LIZENZEN UND MOBILER DIENSTE AUS, INSBESONDERE IMPLIZIERTE GEWÄHRLEISTUNGEN FÜR MARKTGÄNGIGKEIT, ZUFRIEDENSTELLENDE QUALITÄT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, GENAUIGKEIT, UNGESTÖRTE NUTZUNG UND NICHTVERLETZUNG DER RECHTE DRITTER. EINIGE RECHTSORDNUNGEN ERLAUBEN KEINE AUSSCHLÜSSE IMPLIZIERTER GEWÄHRLEISTUNGEN ODER BESCHRÄNKUNGEN ANWENDBARER GESETZLICHER RECHTE VON VERBRAUCHERN; DIE VORSTEHEND AUFGEFÜHRTEN AUSSCHLÜSSE UND BESCHRÄNKUNGEN GELTEN ALSO MÖGLICHERWEISE NICHT FÜR SIE. IHR DIENSTANBIETER GEWÄHRLEISTET NICHT, DASS DIE ANWENDUNG MIT JEDEM MOBILTELEFONTYP KOMPATIBEL IST. UNGEACHTET DES VORSTEHENDEN WIRD DIE HAFTUNG IHRES DIENSTANBIETERS SOWIE SEINER JEWEILIGEN TOCHTERUNTERNEHEN, VERBUNDENEN UNTERNEHMEN, MITARBEITER, BEAUFTRAGTEN, FÜHRUNGSKRÄFTE UND GESCHÄFTSFÜHRER IN KEINEM FALL DIE SUMME VON 100 USD ÜBERSCHREITEN (UNGEACHTET DER FORM DER EINGELEGTEN RECHTSMITTEL, UND UNGEACHTET DESSEN, OB DIESE SICH AUS DEM VERTRAG, EINER UNERLAUBTEN HANDLUNG ODER ANDERWEITIG ERGEBEN).</p></section><section id="limitation_of_liability"><h3>4. HAFTUNGSBESCHRÄNKUNG</h3><p>4.1 SOWEIT IM GESETZLICHEN RAHMEN NICHT UNZULÄSSIG IST IHR DIENSTANBIETER IN KEINEM FALL HAFTBAR FÜR JEDWEDE SCHÄDEN, INSBESONDERE DIREKTE, INDIREKTE, BESONDERE, ZUFÄLLIGE ODER ALS FOLGE ENTSTANDENE SCHÄDEN, VERLUSTE ODER KOSTEN, DIE SICH AUS DER ANWENDUNG, GGF. BEIGEFÜGTEN OPEN-SOURCE-LIZENZEN, DEN MOBILEN DIENSTEN SOWIE DEREN NUTZUNG ODER UNMÖGLICHKEIT DER NUTZUNG SEITENS JEGLICHER PARTEI ERGEBEN, ODER IM ZUSAMMENHANG MIT JEGLICHEN FUNKTIONSAUSFÄLLEN, FEHLERN, AUSLASSUNGEN, UNTERBRECHUNGEN, DEFEKTEN, BETRIEBS- ODER ÜBERTRAGUNGSVERZÖGERUNGEN, COMPUTERVIREN ODER SYSTEMAUSFÄLLEN, SELBST WENN IHR DIENSTANBIETER ODER DESSEN VERTRETER AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN, VERLUSTE ODER KOSTEN HINGEWIESEN WURDEN.</p></section><section id="expert_control"><h3>5. EXPORTKONTROLLE</h3><p>5.1 Sie dürfen die Anwendung nur im Einklang mit den Gesetzen der Vereinigten Staaten nutzen oder anderweitig exportieren oder reexportieren. Insbesondere darf die Anwendung nicht exportiert oder reexportiert werden (a) in ein von den Vereinigten Staaten mit einem Embargo belegtes Land, oder (b) an jedwede Person, die auf der Liste der „Specially Designated Nationals“ des US-Finanzministeriums oder der „Denied Person’s List“ oder der „Entity List“ des US-Handelsministeriums verzeichnet ist. Indem Sie die Anwendung nutzen, versichern und garantieren Sie, dass Sie sich nicht in einem solchen Land befinden oder auf einer solchen Liste verzeichnet sind.</p></section></div><div id="card_alerts_container">%4$s</div></body></html>
]]></string>
</resources>
Update 1:
I try to use xml.etree.ElementTree and lxml to visit every element in the xml and print the item.text. But it could not print with CDATA delimeter.
from lxml import etree
import xml.etree.ElementTree as ElementTree
CONTENT = """
<process id="process1">
<log name="name1" device="device1"><![CDATA[timestamp value]]></log>
<log name="name2" device="device2"><![CDATA[timestamp value, timestamp value, timestamp]]></log>
</process>
"""
def output_with_lxml2():
parser = etree.XMLParser(strip_cdata=False)
root = etree.XML(CONTENT, parser)
print root.text
print etree.tostring(root)
def output_with_lxml_3_input_file():
parser = etree.XMLParser(strip_cdata=False)
tree = etree.parse('input.xml', parser)
root = tree.getroot()
for item in root:
print 'string id = ' + item.attrib['name'] + ' ##### string value = ' + item.text
def output_with_elementtree_input_file():
tree = ElementTree.parse('input.xml')
root = tree.getroot()
count = 0
for item in root:
print count, 'string id = ' + item.attrib['name'] + ' ##### string value = ' + item.text
count = count + 1
if __name__ == '__main__':
# parse_with_lxml()
# parse_with_stdlib()
# output_with_lxml()
output_with_lxml2()
output_with_lxml_3_input_file()
output_with_elementtree_input_file()
And the run result is like this:
/usr/bin/python2.7 /Users/zgong/PycharmProjects/mep_vdca_translation/outputCDATA4.py
<process id="process1">
<log name="name1" device="device1"><![CDATA[timestamp value]]></log>
<log name="name2" device="device2"><![CDATA[timestamp value, timestamp value, timestamp]]></log>
</process>
string id = card_alerts ##### string value = <div id="card_alerts" aria-labelledby="card alerts"><h2>Kartenwarnmeldungen</h2><section id="card_alerts_text_messages"><h3>1. SMS</h3><p>1.1 Um Kartenwarnmeldungen per SMS abonnieren zu können, müssen Sie zustimmen, dass SMS an Ihre Mobiltelefonnummer gesendet werden dürfen, einschliesslich einer abschliessenden Bestätigung, wenn Sie den Dienst kündigen, gemäss unseren Geschäftsbedingungen und der Datenschutzrichtlinie. <b>%1$s</b>. Die Nachrichtenfrequenz variiert. T‑Mobile haftet nicht für verzögerte oder nicht übertragene Nachrichten. Für Nachrichten und die Datenübertragung können Standardgebühren anfallen.</p></section><section id="card_alerts_supported_carriers"><h3>2. SUPPORTED CARRIERS</h3><p>2.1 Zu den unterstützten Betreibern zählen: ACS Wireless, Alltel (einschliesslich Midwest), AT&T, Bluegrass, Boost, Cellcom, Cellular One of East Central Illinois, Cellular South, Centennial, Cincinnati Bell, Cox Wireless, East Kentucky Network, GCI Communications, Immix Wireless, Inland Cellular, MetroPCS, Nex-Tech Wireless, nTelos, Revol Wireless, Rural Cellular Corporation, Sprint, T-Mobile® USA (einschliesslich Suncom), Thumb Cellular, U.S. Cellular®, United, MetroPCS, Verizon Wireless, Virgin Mobile USA und WCC oder WCW (West Central Wireless).</p></section></div>
string id = software_license ##### string value = <b>SOFTWARELIZENZ</b>
string id = software_application_usage ##### string value =
<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Disclosures</title><style type="text/css"> h1, h2, h3, p { font-family: sans-serif; color: #333333; } h1{ font-size: 1.5em; } h2{ font-size: 1.248em; } h3, p { font-size: 0.998em; } .widgetMarginHelper{ margin : 1em; } </style></head><body class="widgetMarginHelper"><div><h1 id="disclosures_heading">%1$s</h1></div><div><p id="disclosures_legal_intro">%2$s</p></div><div id="software_license_content" aria-labelledby="software license"><div><h2 id="software_license_heading">%3$s</h2></div><section id="software_application_usage">><h3>1. NUTZUNG DER SOFTWAREANWENDUNG</h3><p>1.1 Ihr Dienstanbieter gewährt Ihnen hiermit eine beschränkte, persönliche, widerrufbare, nicht abtretbare, nicht übertragbare und nicht exklusive Lizenz, die Softwareanwendung (einschließlich zukünftiger Updates oder Upgrades, die Ihnen gelegentlich unter der Voraussetzung zur Verfügung gestellt werden, dass Sie anerkennen, dass solche Aktualisierungen oder Upgrades zusätzlichen Bedingungen unterliegen können) gemäß den nachfolgenden Verpflichtungen und Einschränkungen zu nutzen:</p><p>1.1.1 Sie dürfen die Anwendung nur auf einem einzigen registrierten Mobiltelefon nutzen, das sich in Ihrem Besitz oder unter Ihrer Kontrolle befindet. Sie werden jedes zusätzliche oder Ersatz-Mobiltelefon separat registrieren müssen;</p><p>1.1.2 Sie dürfen die Anwendung ausschließlich zum Erhalt der mobilen Dienste nutzen, und zu keinerlei anderem Zweck;</p><p>1.1.3 Die Anwendung wird ausschließlich für Ihre persönliche Nutzung an Sie lizenziert, und es ist Ihnen untersagt, anderen Personen jedwede Nutzungsrechte oder anderweitigen Rechte bezüglich der Anwendung zu übertragen, zu verleihen, weiterzuverbreiten, zu gewähren oder Unterlizenzen zu erteilen;</p><p>1.1.4 Sie dürfen die Softwareanwendung in keinerlei Form ganz oder teilweise kopieren oder vervielfältigen (sofern nicht ausdrücklich durch diese Lizenz erlaubt), dekompilieren, nachkonstruieren, zerlegen, modifizieren, als Grundlage abgeleiteter Werke verwenden, oder versuchen, ihren Quellcode abzuleiten;</p><p>1.1.5 Sie dürfen die Anwendung in keiner Weise verwenden, die die Anwendung (oder jedwede Server oder Netzwerke, die mit der Anwendung verbunden oder verknüpft sind) schädigen, deaktivieren, überlasten oder beeinträchtigen könnte, oder die für eine dritte Partei die Nutzung der und/oder die Freude an der Anwendung störend beeinflussen könnte;</p><p>1.1.6 Sie dürfen keinerlei Urheberrechtsvermerke entfernen oder modifizieren, die der Softwareanwendung beigefügt oder in ihr enthalten sind, und Sie erkennen an und stimmen zu, dass im Rechtsverhältnis zwischen Ihnen und uns die Softwareanwendung unser Eigentum verbleibt, und dass Sie keinerlei Rechte, Rechtstitel oder Ansprüche auf die Anwendung haben, sei es durch Implikation, Rechtsverwirkung oder anderweitig, mit Ausnahme der in dieser Lizenz dargelegten beschränkten Rechte;</p><p>1.1.7 Sie dürfen die Anwendung in keiner Weise zum Zwecke nutzen, testen oder anderweitig verwenden, ein Verfahren oder eine Software zu entwickeln oder zu implementieren, deren Ziel es ist, die Funktionalität der Anwendung (oder jedweder Server oder Netzwerke, die mit der Anwendung verbunden oder verknüpft sind) zu überwachen oder zu beeinträchtigen (einschließlich des Abfangens von Daten);</p><p>1.1.8 Sie dürfen die Sicherheitsfunktionen der Anwendung nicht vorsätzlich beeinträchtigen oder umgehen;</p><p>1.1.9 Sie stimmen auch zu, dass Sie die Anwendung für keine Zwecke, die durch das Recht der Vereinigten Staaten oder durch anwendbares Recht untersagt sind, nutzen werden;</p><p>1.1.10 Bei jedweder Beendigung der mobilen Dienste verfallen alle Rechte, die Ihnen bezüglich der Softwareanwendung gewährt wurden, unmittelbar; und</p><p>1.1.11 Jedwede Open-Source-Software, die der Anwendung möglicherweise beigefügt ist, wird Ihnen gemäß der entsprechenden Open-Source-Lizenzvereinbarung bereitgestellt und nicht gemäß dieser Lizenz, und Ihr Dienstanbieter lehnt jede Haftung bezüglich jedweder bereitgestellten Open-Source-Lizenz ab, wie nachfolgend angegeben.</p></section><section id="software_license_termination"><h3>2. BEENDIGUNG DER SOFTWARELIZENZ</h3><p>2.1 Die Softwarelizenz gilt, sobald Sie die Softwarelizenz akzeptieren oder die Softwareanwendung installieren (je nachdem, was zuerst eintrifft), und bis Sie gemäß den folgenden Bestimmungen oder anderweitig in Übereinstimmung mit der Softwarelizenz beendet wird.</p><p>2.2 Die Softwarelizenz wird automatisch gekündigt, wenn Sie die mobilen Dienste abbestellen und/oder die Softwareanwendung deinstallieren, oder falls Sie diese Lizenz oder die Geschäftsbedingungen der mobilen Dienste nicht erfüllen.</p><p>2.3 Nach Beendigung der Softwarelizenz (aus jedwedem Grund) müssen Sie die Softwareanwendung deinstallieren und alle Kopien der Softwareanwendung einschließlich all ihrer Komponenten, die sich in Ihrem Besitz oder Ihrer Kontrolle befinden, vernichten.</p></section><section id="disclaimer_of_warranty"><h3>3. GEWÄHRLEISTUNGSAUSSCHLUSS</h3><p>3.1 SIE ERKENNEN AN UND STIMMEN ZU, DASS DIE ANWENDUNG, GGF. BEIGEFÜGTE OPEN-SOURCE-LIZENZEN SOWIE DIE MOBILEN DIENSTE IN IHRER VORHANDENEN FORM UND VERFÜGBARKEIT BEREITGESTELLT WERDEN, MIT ALLEN FEHLERN UND OHNE JEGLICHE GEWÄHRLEISTUNG. IHR DIENSTANBIETER SOWIE SEINE TOCHTERUNTERNEHMEN, VERBUNDENEN UNTERNEHMEN, MITARBEITER, BEAUFTRAGTEN, FÜHRUNGSKRÄFTE UND GESCHÄFTSFÜHRER SCHLIESSEN HIERMIT JEDWEDE (AUSDRÜCKLICHEN, IMPLIZIERTEN ODER GESETZLICHEN) GEWÄHRLEISTUNGEN BEZÜGLICH DER ANWENDUNG, GGF. BEIGEFÜGTER OPEN-SOURCE-LIZENZEN UND MOBILER DIENSTE AUS, INSBESONDERE IMPLIZIERTE GEWÄHRLEISTUNGEN FÜR MARKTGÄNGIGKEIT, ZUFRIEDENSTELLENDE QUALITÄT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, GENAUIGKEIT, UNGESTÖRTE NUTZUNG UND NICHTVERLETZUNG DER RECHTE DRITTER. EINIGE RECHTSORDNUNGEN ERLAUBEN KEINE AUSSCHLÜSSE IMPLIZIERTER GEWÄHRLEISTUNGEN ODER BESCHRÄNKUNGEN ANWENDBARER GESETZLICHER RECHTE VON VERBRAUCHERN; DIE VORSTEHEND AUFGEFÜHRTEN AUSSCHLÜSSE UND BESCHRÄNKUNGEN GELTEN ALSO MÖGLICHERWEISE NICHT FÜR SIE. IHR DIENSTANBIETER GEWÄHRLEISTET NICHT, DASS DIE ANWENDUNG MIT JEDEM MOBILTELEFONTYP KOMPATIBEL IST. UNGEACHTET DES VORSTEHENDEN WIRD DIE HAFTUNG IHRES DIENSTANBIETERS SOWIE SEINER JEWEILIGEN TOCHTERUNTERNEHEN, VERBUNDENEN UNTERNEHMEN, MITARBEITER, BEAUFTRAGTEN, FÜHRUNGSKRÄFTE UND GESCHÄFTSFÜHRER IN KEINEM FALL DIE SUMME VON 100 USD ÜBERSCHREITEN (UNGEACHTET DER FORM DER EINGELEGTEN RECHTSMITTEL, UND UNGEACHTET DESSEN, OB DIESE SICH AUS DEM VERTRAG, EINER UNERLAUBTEN HANDLUNG ODER ANDERWEITIG ERGEBEN).</p></section><section id="limitation_of_liability"><h3>4. HAFTUNGSBESCHRÄNKUNG</h3><p>4.1 SOWEIT IM GESETZLICHEN RAHMEN NICHT UNZULÄSSIG IST IHR DIENSTANBIETER IN KEINEM FALL HAFTBAR FÜR JEDWEDE SCHÄDEN, INSBESONDERE DIREKTE, INDIREKTE, BESONDERE, ZUFÄLLIGE ODER ALS FOLGE ENTSTANDENE SCHÄDEN, VERLUSTE ODER KOSTEN, DIE SICH AUS DER ANWENDUNG, GGF. BEIGEFÜGTEN OPEN-SOURCE-LIZENZEN, DEN MOBILEN DIENSTEN SOWIE DEREN NUTZUNG ODER UNMÖGLICHKEIT DER NUTZUNG SEITENS JEGLICHER PARTEI ERGEBEN, ODER IM ZUSAMMENHANG MIT JEGLICHEN FUNKTIONSAUSFÄLLEN, FEHLERN, AUSLASSUNGEN, UNTERBRECHUNGEN, DEFEKTEN, BETRIEBS- ODER ÜBERTRAGUNGSVERZÖGERUNGEN, COMPUTERVIREN ODER SYSTEMAUSFÄLLEN, SELBST WENN IHR DIENSTANBIETER ODER DESSEN VERTRETER AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN, VERLUSTE ODER KOSTEN HINGEWIESEN WURDEN.</p></section><section id="expert_control"><h3>5. EXPORTKONTROLLE</h3><p>5.1 Sie dürfen die Anwendung nur im Einklang mit den Gesetzen der Vereinigten Staaten nutzen oder anderweitig exportieren oder reexportieren. Insbesondere darf die Anwendung nicht exportiert oder reexportiert werden (a) in ein von den Vereinigten Staaten mit einem Embargo belegtes Land, oder (b) an jedwede Person, die auf der Liste der „Specially Designated Nationals“ des US-Finanzministeriums oder der „Denied Person’s List“ oder der „Entity List“ des US-Handelsministeriums verzeichnet ist. Indem Sie die Anwendung nutzen, versichern und garantieren Sie, dass Sie sich nicht in einem solchen Land befinden oder auf einer solchen Liste verzeichnet sind.</p></section></div><div id="card_alerts_container">%4$s</div></body></html>
Process finished with exit code 0
Try this.
from simplified_scrapy import SimplifiedDoc, utils
# xml = utils.getFileContent('your xml file.xml')
xml = '''
<resources>
<string name="card_alerts"><![CDATA[<div id="card_alerts" aria-labelledby="card alerts"><h2>Kartenwarnmeldungen</h2><section id="card_alerts_text_messages"><h3>1. SMS</h3><p>1.1 Um Kartenwarnmeldungen per SMS abonnieren zu können, müssen Sie zustimmen, dass SMS an Ihre Mobiltelefonnummer gesendet werden dürfen, einschliesslich einer abschliessenden Bestätigung, wenn Sie den Dienst kündigen, gemäss unseren Geschäftsbedingungen und der Datenschutzrichtlinie. <b>%1$s</b>. Die Nachrichtenfrequenz variiert. T‑Mobile haftet nicht für verzögerte oder nicht übertragene Nachrichten. Für Nachrichten und die Datenübertragung können Standardgebühren anfallen.</p></section><section id="card_alerts_supported_carriers"><h3>2. SUPPORTED CARRIERS</h3><p>2.1 Zu den unterstützten Betreibern zählen: ACS Wireless, Alltel (einschliesslich Midwest), AT&T, Bluegrass, Boost, Cellcom, Cellular One of East Central Illinois, Cellular South, Centennial, Cincinnati Bell, Cox Wireless, East Kentucky Network, GCI Communications, Immix Wireless, Inland Cellular, MetroPCS, Nex-Tech Wireless, nTelos, Revol Wireless, Rural Cellular Corporation, Sprint, T-Mobile® USA (einschliesslich Suncom), Thumb Cellular, U.S. Cellular®, United, MetroPCS, Verizon Wireless, Virgin Mobile USA und WCC oder WCW (West Central Wireless).</p></section></div>]]></string>
<string name="software_license"><![CDATA[<b>SOFTWARELIZENZ</b>]]></string>
<string name="software_application_usage"><![CDATA[
<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Disclosures</title><style type="text/css"> h1, h2, h3, p { font-family: sans-serif; color: #333333; } h1{ font-size: 1.5em; } h2{ font-size: 1.248em; } h3, p { font-size: 0.998em; } .widgetMarginHelper{ margin : 1em; } </style></head><body class="widgetMarginHelper"><div><h1 id="disclosures_heading">%1$s</h1></div><div><p id="disclosures_legal_intro">%2$s</p></div><div id="software_license_content" aria-labelledby="software license"><div><h2 id="software_license_heading">%3$s</h2></div><section id="software_application_usage">><h3>1. NUTZUNG DER SOFTWAREANWENDUNG</h3><p>1.1 Ihr Dienstanbieter gewährt Ihnen hiermit eine beschränkte, persönliche, widerrufbare, nicht abtretbare, nicht übertragbare und nicht exklusive Lizenz, die Softwareanwendung (einschließlich zukünftiger Updates oder Upgrades, die Ihnen gelegentlich unter der Voraussetzung zur Verfügung gestellt werden, dass Sie anerkennen, dass solche Aktualisierungen oder Upgrades zusätzlichen Bedingungen unterliegen können) gemäß den nachfolgenden Verpflichtungen und Einschränkungen zu nutzen:</p><p>1.1.1 Sie dürfen die Anwendung nur auf einem einzigen registrierten Mobiltelefon nutzen, das sich in Ihrem Besitz oder unter Ihrer Kontrolle befindet. Sie werden jedes zusätzliche oder Ersatz-Mobiltelefon separat registrieren müssen;</p><p>1.1.2 Sie dürfen die Anwendung ausschließlich zum Erhalt der mobilen Dienste nutzen, und zu keinerlei anderem Zweck;</p><p>1.1.3 Die Anwendung wird ausschließlich für Ihre persönliche Nutzung an Sie lizenziert, und es ist Ihnen untersagt, anderen Personen jedwede Nutzungsrechte oder anderweitigen Rechte bezüglich der Anwendung zu übertragen, zu verleihen, weiterzuverbreiten, zu gewähren oder Unterlizenzen zu erteilen;</p><p>1.1.4 Sie dürfen die Softwareanwendung in keinerlei Form ganz oder teilweise kopieren oder vervielfältigen (sofern nicht ausdrücklich durch diese Lizenz erlaubt), dekompilieren, nachkonstruieren, zerlegen, modifizieren, als Grundlage abgeleiteter Werke verwenden, oder versuchen, ihren Quellcode abzuleiten;</p><p>1.1.5 Sie dürfen die Anwendung in keiner Weise verwenden, die die Anwendung (oder jedwede Server oder Netzwerke, die mit der Anwendung verbunden oder verknüpft sind) schädigen, deaktivieren, überlasten oder beeinträchtigen könnte, oder die für eine dritte Partei die Nutzung der und/oder die Freude an der Anwendung störend beeinflussen könnte;</p><p>1.1.6 Sie dürfen keinerlei Urheberrechtsvermerke entfernen oder modifizieren, die der Softwareanwendung beigefügt oder in ihr enthalten sind, und Sie erkennen an und stimmen zu, dass im Rechtsverhältnis zwischen Ihnen und uns die Softwareanwendung unser Eigentum verbleibt, und dass Sie keinerlei Rechte, Rechtstitel oder Ansprüche auf die Anwendung haben, sei es durch Implikation, Rechtsverwirkung oder anderweitig, mit Ausnahme der in dieser Lizenz dargelegten beschränkten Rechte;</p><p>1.1.7 Sie dürfen die Anwendung in keiner Weise zum Zwecke nutzen, testen oder anderweitig verwenden, ein Verfahren oder eine Software zu entwickeln oder zu implementieren, deren Ziel es ist, die Funktionalität der Anwendung (oder jedweder Server oder Netzwerke, die mit der Anwendung verbunden oder verknüpft sind) zu überwachen oder zu beeinträchtigen (einschließlich des Abfangens von Daten);</p><p>1.1.8 Sie dürfen die Sicherheitsfunktionen der Anwendung nicht vorsätzlich beeinträchtigen oder umgehen;</p><p>1.1.9 Sie stimmen auch zu, dass Sie die Anwendung für keine Zwecke, die durch das Recht der Vereinigten Staaten oder durch anwendbares Recht untersagt sind, nutzen werden;</p><p>1.1.10 Bei jedweder Beendigung der mobilen Dienste verfallen alle Rechte, die Ihnen bezüglich der Softwareanwendung gewährt wurden, unmittelbar; und</p><p>1.1.11 Jedwede Open-Source-Software, die der Anwendung möglicherweise beigefügt ist, wird Ihnen gemäß der entsprechenden Open-Source-Lizenzvereinbarung bereitgestellt und nicht gemäß dieser Lizenz, und Ihr Dienstanbieter lehnt jede Haftung bezüglich jedweder bereitgestellten Open-Source-Lizenz ab, wie nachfolgend angegeben.</p></section><section id="software_license_termination"><h3>2. BEENDIGUNG DER SOFTWARELIZENZ</h3><p>2.1 Die Softwarelizenz gilt, sobald Sie die Softwarelizenz akzeptieren oder die Softwareanwendung installieren (je nachdem, was zuerst eintrifft), und bis Sie gemäß den folgenden Bestimmungen oder anderweitig in Übereinstimmung mit der Softwarelizenz beendet wird.</p><p>2.2 Die Softwarelizenz wird automatisch gekündigt, wenn Sie die mobilen Dienste abbestellen und/oder die Softwareanwendung deinstallieren, oder falls Sie diese Lizenz oder die Geschäftsbedingungen der mobilen Dienste nicht erfüllen.</p><p>2.3 Nach Beendigung der Softwarelizenz (aus jedwedem Grund) müssen Sie die Softwareanwendung deinstallieren und alle Kopien der Softwareanwendung einschließlich all ihrer Komponenten, die sich in Ihrem Besitz oder Ihrer Kontrolle befinden, vernichten.</p></section><section id="disclaimer_of_warranty"><h3>3. GEWÄHRLEISTUNGSAUSSCHLUSS</h3><p>3.1 SIE ERKENNEN AN UND STIMMEN ZU, DASS DIE ANWENDUNG, GGF. BEIGEFÜGTE OPEN-SOURCE-LIZENZEN SOWIE DIE MOBILEN DIENSTE IN IHRER VORHANDENEN FORM UND VERFÜGBARKEIT BEREITGESTELLT WERDEN, MIT ALLEN FEHLERN UND OHNE JEGLICHE GEWÄHRLEISTUNG. IHR DIENSTANBIETER SOWIE SEINE TOCHTERUNTERNEHMEN, VERBUNDENEN UNTERNEHMEN, MITARBEITER, BEAUFTRAGTEN, FÜHRUNGSKRÄFTE UND GESCHÄFTSFÜHRER SCHLIESSEN HIERMIT JEDWEDE (AUSDRÜCKLICHEN, IMPLIZIERTEN ODER GESETZLICHEN) GEWÄHRLEISTUNGEN BEZÜGLICH DER ANWENDUNG, GGF. BEIGEFÜGTER OPEN-SOURCE-LIZENZEN UND MOBILER DIENSTE AUS, INSBESONDERE IMPLIZIERTE GEWÄHRLEISTUNGEN FÜR MARKTGÄNGIGKEIT, ZUFRIEDENSTELLENDE QUALITÄT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, GENAUIGKEIT, UNGESTÖRTE NUTZUNG UND NICHTVERLETZUNG DER RECHTE DRITTER. EINIGE RECHTSORDNUNGEN ERLAUBEN KEINE AUSSCHLÜSSE IMPLIZIERTER GEWÄHRLEISTUNGEN ODER BESCHRÄNKUNGEN ANWENDBARER GESETZLICHER RECHTE VON VERBRAUCHERN; DIE VORSTEHEND AUFGEFÜHRTEN AUSSCHLÜSSE UND BESCHRÄNKUNGEN GELTEN ALSO MÖGLICHERWEISE NICHT FÜR SIE. IHR DIENSTANBIETER GEWÄHRLEISTET NICHT, DASS DIE ANWENDUNG MIT JEDEM MOBILTELEFONTYP KOMPATIBEL IST. UNGEACHTET DES VORSTEHENDEN WIRD DIE HAFTUNG IHRES DIENSTANBIETERS SOWIE SEINER JEWEILIGEN TOCHTERUNTERNEHEN, VERBUNDENEN UNTERNEHMEN, MITARBEITER, BEAUFTRAGTEN, FÜHRUNGSKRÄFTE UND GESCHÄFTSFÜHRER IN KEINEM FALL DIE SUMME VON 100 USD ÜBERSCHREITEN (UNGEACHTET DER FORM DER EINGELEGTEN RECHTSMITTEL, UND UNGEACHTET DESSEN, OB DIESE SICH AUS DEM VERTRAG, EINER UNERLAUBTEN HANDLUNG ODER ANDERWEITIG ERGEBEN).</p></section><section id="limitation_of_liability"><h3>4. HAFTUNGSBESCHRÄNKUNG</h3><p>4.1 SOWEIT IM GESETZLICHEN RAHMEN NICHT UNZULÄSSIG IST IHR DIENSTANBIETER IN KEINEM FALL HAFTBAR FÜR JEDWEDE SCHÄDEN, INSBESONDERE DIREKTE, INDIREKTE, BESONDERE, ZUFÄLLIGE ODER ALS FOLGE ENTSTANDENE SCHÄDEN, VERLUSTE ODER KOSTEN, DIE SICH AUS DER ANWENDUNG, GGF. BEIGEFÜGTEN OPEN-SOURCE-LIZENZEN, DEN MOBILEN DIENSTEN SOWIE DEREN NUTZUNG ODER UNMÖGLICHKEIT DER NUTZUNG SEITENS JEGLICHER PARTEI ERGEBEN, ODER IM ZUSAMMENHANG MIT JEGLICHEN FUNKTIONSAUSFÄLLEN, FEHLERN, AUSLASSUNGEN, UNTERBRECHUNGEN, DEFEKTEN, BETRIEBS- ODER ÜBERTRAGUNGSVERZÖGERUNGEN, COMPUTERVIREN ODER SYSTEMAUSFÄLLEN, SELBST WENN IHR DIENSTANBIETER ODER DESSEN VERTRETER AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN, VERLUSTE ODER KOSTEN HINGEWIESEN WURDEN.</p></section><section id="expert_control"><h3>5. EXPORTKONTROLLE</h3><p>5.1 Sie dürfen die Anwendung nur im Einklang mit den Gesetzen der Vereinigten Staaten nutzen oder anderweitig exportieren oder reexportieren. Insbesondere darf die Anwendung nicht exportiert oder reexportiert werden (a) in ein von den Vereinigten Staaten mit einem Embargo belegtes Land, oder (b) an jedwede Person, die auf der Liste der „Specially Designated Nationals“ des US-Finanzministeriums oder der „Denied Person’s List“ oder der „Entity List“ des US-Handelsministeriums verzeichnet ist. Indem Sie die Anwendung nutzen, versichern und garantieren Sie, dass Sie sich nicht in einem solchen Land befinden oder auf einer solchen Liste verzeichnet sind.</p></section></div><div id="card_alerts_container">%4$s</div></body></html>
]]></string>
</resources>
'''
doc = SimplifiedDoc(xml)
for string in doc.selects('string'):
if string['name'] == 'card_alerts' or string['name'] == 'software_application_usage':
string.remove()
else:
print (string.html)
print(doc.html)
utils.saveFile('test.xml', doc.html)
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)