Wie bekomme ich den ganzen Text von einer Website mit Scrapy?

Ich hätte gern den ganzen Text von einer Website sichtbar, nachdem der HTML-Code gerendert wurde. Ich arbeite in Python mit Scrapy Rahmen. Mit xpath('//body//text()') ich es bekommen, aber mit den HTML-Tags und ich will nur den Text. Irgendeine Lösung dafür? Vielen Dank !

2 Solutions collect form web for “Wie bekomme ich den ganzen Text von einer Website mit Scrapy?”

Die einfachste Möglichkeit wäre, //body//text() zu extract und alles zu finden:

 ''.join(sel.select("//body//text()").extract()).strip() 

Wo sel ist eine Selector Instanz.

Eine weitere Möglichkeit ist, nltk 's clean_html() :

 >>> import nltk >>> html = """ ... <div class="post-text" itemprop="description"> ... ... <p>I would like to have all the text visible from a website, after the HTML is rendered. I'm working in Python with Scrapy framework. ... With <code>xpath('//body//text()')</code> I'm able to get it, but with the HTML tags, and I only want the text. Any solution for this? Thanks !</p> ... ... </div>""" >>> nltk.clean_html(html) "I would like to have all the text visible from a website, after the HTML is rendered. I'm working in Python with Scrapy framework.\nWith xpath('//body//text()') I'm able to get it, but with the HTML tags, and I only want the text. Any solution for this? Thanks !" 

Eine weitere Möglichkeit ist die Verwendung von BeautifulSoup 's get_text() :

get_text()

Wenn Sie nur den Textteil eines Dokuments oder eines Tags wünschen, können Sie die Methode get_text() verwenden. Es gibt den gesamten Text in einem Dokument oder unter einem Tag als eine einzige Unicode-Zeichenfolge zurück.

 >>> from bs4 import BeautifulSoup >>> soup = BeautifulSoup(html) >>> print soup.get_text().strip() I would like to have all the text visible from a website, after the HTML is rendered. I'm working in Python with Scrapy framework. With xpath('//body//text()') I'm able to get it, but with the HTML tags, and I only want the text. Any solution for this? Thanks ! 

Eine weitere Möglichkeit ist die Verwendung von lxml.html 's text_content() :

.text_content()

Gibt den Textinhalt des Elements, einschließlich des Textinhalts seiner Kinder, ohne Markup zurück.

 >>> import lxml.html >>> tree = lxml.html.fromstring(html) >>> print tree.text_content().strip() I would like to have all the text visible from a website, after the HTML is rendered. I'm working in Python with Scrapy framework. With xpath('//body//text()') I'm able to get it, but with the HTML tags, and I only want the text. Any solution for this? Thanks ! 

Hast du es versucht?

 xpath('//body//text()').re('(\w+)') 

ODER

  xpath('//body//text()').extract() 
  • Lxml XPath position () funktioniert nicht
  • Python xpath funktioniert nicht?
  • Wie kann XPath mehrere Tabellenelemente mit identischen ID-Attributen auswählen?
  • Extrahieren Sie Informationen von der Website mit Xpath, Python
  • Wie passe ich den Inhalt eines Elements in XPath (lxml) an?
  • Holen Sie den zweiten Elementtext mit XPath?
  • XPATH - Wie bekomme ich die inneren Textdaten mit den Tags?
  • Cant Scrape Webseite mit Python Requests Library
  • Daten mit unregelmäßigem Muster extrahieren - Python Xpath
  • Sortieren von XML-Dateien
  • Wie man das XML-Attribut mit Python ElementTree extrahiert
  • Python ist die beste Programmiersprache der Welt.