Scrapy는 웹사이트의 데이터를 쉽게 크롤링하고 구문 분석할 수 있는 Python 기반 웹 크롤러 프레임워크입니다. Scrapy를 사용할 때 HTML 코드를 파싱하는 것은 필수적인 부분입니다. 이 기사에서는 독자가 Scrapy 사용에 대해 더 깊이 이해할 수 있도록 Scrapy가 HTML 코드를 구문 분석하는 방법을 소개합니다.
1. Scrapy가 HTML 코드를 구문 분석하는 원리
Scrapy에는 HTML 코드를 구문 분석하는 두 가지 방법이 있습니다: XPath와 CSS 선택기. XPath는 XML 문서의 노드를 탐색하고 선택할 수 있는 XML 경로 언어입니다. CSS 선택기는 CSS와 유사한 구문을 통해 페이지의 요소를 선택하는 CSS 스타일 선택기입니다. Scrapy를 사용하여 HTML 코드를 구문 분석할 때 페이지 구조와 캡처해야 하는 데이터 유형에 따라 다양한 구문 분석 방법을 선택할 수 있습니다.
2. XPath는 HTML 코드를 구문 분석합니다.
XPath는 Scrapy에서 HTML 코드를 구문 분석하는 일반적인 방법입니다. XPath를 사용하려면 lxml 라이브러리나 Scrapy와 함께 제공되는 Selector 라이브러리를 사용할 수 있습니다. 아래에서는 XPath 사용 방법을 소개하는 예로 Scrapy의 Selector를 사용합니다.
먼저, Scrapy의 요청 라이브러리를 사용하여 얻을 수 있는 페이지의 소스 코드를 가져와야 합니다.
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
다음으로 선택기 라이브러리를 사용하여 HTML 코드를 구문 분석할 수 있습니다. 먼저 Selector 개체를 구성합니다.
from scrapy.selector import Selector selector = Selector(text=html)
그런 다음 XPath 구문을 사용하여 필요한 요소를 선택할 수 있습니다. 일반적으로 사용되는 XPath 구문은 다음과 같습니다.
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文本内容的文本
위는 Scrapy에서 XPath를 사용하는 방법입니다.
3. CSS 선택기는 HTML 코드를 구문 분석합니다.
CSS 선택기는 Scrapy에서 HTML 코드를 구문 분석하는 데 일반적으로 사용되는 또 다른 방법입니다. XPath와 달리 CSS 선택기는 CSS 스타일 선택기의 구문을 사용합니다. 아래에서는 CSS 선택기의 사용법을 소개하기 위해 Scrapy와 함께 제공되는 선택기를 예로 사용합니다.
먼저, Scrapy의 요청 라이브러리를 사용하여 얻을 수 있는 페이지의 소스 코드를 가져와야 합니다.
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
다음으로 선택기 라이브러리를 사용하여 HTML 코드를 구문 분석할 수 있습니다. 또는 먼저 Selector 개체를 구성하세요.
from scrapy.selector import Selector selector = Selector(text=html)
CSS 선택기 구문을 사용하여 요소를 선택하세요.
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文本内容的文本
위는 Scrapy에서 CSS Selector를 사용하는 방법입니다.
4. 요약
이 글의 소개를 통해 우리는 Scrapy가 HTML 코드를 구문 분석하는 두 가지 방법인 XPath와 CSS Selector를 볼 수 있습니다. 이 두 가지 방법을 사용하면 HTML에서 필요한 데이터를 쉽게 선택할 수 있습니다. 파싱 방법을 선택할 때에는 페이지의 구조와 추출하려는 데이터의 종류에 따라 적절한 방법과 구문을 선택해야 한다는 점에 유의해야 한다.
위 내용은 Scrapy가 HTML 코드를 구문 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!