> 백엔드 개발 > 파이썬 튜토리얼 > Scrapy가 HTML 코드를 구문 분석하는 방법

Scrapy가 HTML 코드를 구문 분석하는 방법

WBOY
풀어 주다: 2023-06-22 21:25:38
원래의
956명이 탐색했습니다.

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 구문은 다음과 같습니다.

  1. 요소 선택
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元素
로그인 후 복사
  1. 요소 속성 선택
selector.xpath('//a/@href') #选取所有a标签的href属性
로그인 후 복사
  1. 요소 텍스트 선택
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿