Heim >Backend-Entwicklung >Python-Tutorial >Wie Scrapy HTML-Code analysiert
Scrapy ist ein Python-basiertes Webcrawler-Framework, das Daten auf Websites einfach crawlen und analysieren kann. Bei der Verwendung von Scrapy ist das Parsen von HTML-Code ein wesentlicher Bestandteil. In diesem Artikel wird vorgestellt, wie Scrapy HTML-Code analysiert, um den Lesern ein tieferes Verständnis für die Verwendung von Scrapy zu vermitteln.
1. Das Prinzip der Scrapy-Analyse von HTML-Code
In Scrapy gibt es zwei Möglichkeiten, HTML-Code zu analysieren: XPath und CSS Selector. XPath ist eine XML-Pfadsprache, die Knoten eines XML-Dokuments durchlaufen und auswählen kann. CSS Selector ist ein CSS-Stilselektor, der Elemente auf der Seite über eine CSS-ähnliche Syntax auswählt. Wenn Sie Scrapy zum Parsen von HTML-Code verwenden, können Sie basierend auf der Struktur der Seite und der Art der Daten, die erfasst werden müssen, verschiedene Parsing-Methoden auswählen.
2. XPath analysiert HTML-Code
XPath ist eine gängige Methode zum Parsen von HTML-Code in Scrapy. Um XPath zu verwenden, können Sie die lxml-Bibliothek oder die mit Scrapy gelieferte Selector-Bibliothek verwenden. Im Folgenden verwenden wir Selector in Scrapy als Beispiel, um die Verwendung von XPath vorzustellen.
Zuerst müssen wir den Quellcode der Seite abrufen, was mit der Request-Bibliothek von Scrapy erreicht werden kann.
from scrapy import Request def parse(self, response): yield Request(url='http://example.com', callback=self.parse_page) def parse_page(self, response): html = response.body
Als nächstes können wir die Selector-Bibliothek verwenden, um den HTML-Code zu analysieren. Erstellen Sie zunächst ein Selector-Objekt.
from scrapy.selector import Selector selector = Selector(text=html)
Dann können wir die XPath-Syntax verwenden, um die erforderlichen Elemente auszuwählen. Häufig verwendete XPath-Syntaxen sind wie folgt:
selector.xpath('//title') #选取所有的title元素 selector.xpath('//div[@class="example"]') #选取class为example的div元素 selector.xpath('//div[contains(@class, "example")and @id="content"]')#选取class包含example、id为content的div元素
selector.xpath('//a/@href') #选取所有a标签的href属性
selector.xpath('//h1/text()') #选取h1标签的文本内容 selector.xpath('//p[contains(text(), "example")]/text()')#选取p标签中包含example文本内容的文本
Oben wird beschrieben, wie XPath in Scrapy verwendet wird.
3. CSS Selector analysiert HTML-Code.
CSS Selector ist eine weitere häufig verwendete Methode zum Parsen von HTML-Code in Scrapy. Im Gegensatz zu XPath verwendet CSS Selector die Syntax von CSS-Stilselektoren. Im Folgenden verwenden wir den mit Scrapy gelieferten Selector als Beispiel, um die Verwendung von CSS Selector vorzustellen.
Zuerst müssen wir den Quellcode der Seite abrufen, was mit der Request-Bibliothek von Scrapy erreicht werden kann.
from scrapy import Request def parse(self, response): yield Request(url='http://example.com', callback=self.parse_page) def parse_page(self, response): html = response.body
Als nächstes können wir die Selector-Bibliothek verwenden, um den HTML-Code zu analysieren. Oder erstellen Sie zuerst ein Selector-Objekt.
from scrapy.selector import Selector selector = Selector(text=html)
Verwenden Sie die CSS-Selektor-Syntax, um Elemente auszuwählen.
selector.css('title') #选取所有的title元素 selector.css('div.example') #选取class为example的div元素 selector.css('div.example#content')#选取class为example、id为content的div元素 selector.css('a::attr(href)') #选取所有a标签的href属性 selector.css('h1::text') #选取h1标签的文本内容 selector.css('p:contains("example")::text') #选取p标签中包含example文本内容的文本
Oben erfahren Sie, wie Sie den CSS-Selektor in Scrapy verwenden.
4. Zusammenfassung
In der Einleitung dieses Artikels sehen wir zwei Methoden für Scrapy zum Parsen von HTML-Code: XPath und CSS Selector. Mit diesen beiden Methoden können wir die benötigten Daten einfach aus HTML auswählen. Es ist zu beachten, dass bei der Auswahl einer Parsing-Methode die geeignete Methode und Syntax basierend auf der Struktur der Seite und der Art der zu extrahierenden Daten ausgewählt werden muss.
Das obige ist der detaillierte Inhalt vonWie Scrapy HTML-Code analysiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!