Scrapy が HTML コードを解析する方法

WBOY
リリース: 2023-06-22 21:25:38
オリジナル
913 人が閲覧しました

Scrapy は、Web サイト上のデータを簡単にクロールおよび解析できる Python ベースの Web クローラー フレームワークです。 Scrapy を使用する場合、HTML コードの解析は重要な部分です。この記事では、読者が Scrapy の使用法をより深く理解できるように、Scrapy が HTML コードを解析する方法を紹介します。

1. Scrapy の HTML コード解析の原理
Scrapy では、HTML コードを解析する 2 つの方法、XPath と CSS Selector があります。 XPath は、XML ドキュメントのノードを走査して選択できる XML パス言語です。 CSS セレクターは、CSS に似た構文を通じてページ上の要素を選択する CSS スタイル セレクターです。 Scrapy を使用して HTML コードを解析する場合、ページの構造とキャプチャする必要があるデータの種類に基づいて、さまざまな解析方法を選択できます。

2. XPath は HTML コードを解析します
XPath は、Scrapy で HTML コードを解析するための一般的な方法です。 XPath を使用するには、Scrapy に付属の lxml ライブラリまたは Selector ライブラリを使用できます。以下では、Scrapy の Selector を例として、XPath の使用方法を紹介します。

まず、ページのソース コードを取得する必要があります。これは、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. 要素の選択text
selector.xpath('//h1/text()') #选取h1标签的文本内容
selector.xpath('//p[contains(text(), "example")]/text()')#选取p标签中包含example文本内容的文本
ログイン後にコピー

上記は、Scrapy で XPath を使用する方法です。

3. CSS セレクターは HTML コードを解析します
CSS セレクターは、Scrapy で HTML コードを解析するためによく使用されるもう 1 つの方法です。 XPath とは異なり、CSS セレクターは CSS スタイル セレクターの構文を使用します。以下では、Scrapy に付属するセレクターを例として、CSS セレクターの使用方法を紹介します。

まず、ページのソース コードを取得する必要があります。これは、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セレクターを使用する方法です。

4. 概要
この記事の導入部を通じて、Scrapy が HTML コードを解析するための 2 つの方法、XPath と CSS Selector がわかりました。これら 2 つの方法を使用すると、HTML から必要なデータを簡単に選択できます。解析方法を選択するときは、ページの構造と抽出する必要があるデータの種類に基づいて、適切な方法と構文を選択する必要があることに注意してください。

以上がScrapy が HTML コードを解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート