目次
Python を使用した HTML ページの解析
HTML ページの構造
XPath は、XML (eXtensible Markup Language) ドキュメント内の情報を検索するための構文です。XML は HTML に似ており、タグを使用してデータを運ぶタグ言語です。その理由は、XML タグは拡張可能でカスタマイズ可能であり、XML にはより厳格な構文要件があるためです。 XPath はパス式を使用して XML ドキュメント内のノードまたはノード セットを選択します。ここで言及されるノードには、要素、属性、テキスト、名前空間、処理命令、コメント、ルート ノードなどが含まれます。
CSS 选择器解析
正则表达式解析
ホームページ バックエンド開発 Python チュートリアル Python クローラーを使用して HTML ページを解析する方法

Python クローラーを使用して HTML ページを解析する方法

May 30, 2023 pm 09:41 PM
python html

Python を使用した HTML ページの解析

通常、必要なデータを取得するには、Web クロールされたページを解析する必要があります。 HTMLタグの結合構造を解析することで、Webページに含まれる有益な情報を抽出することができます。 Python では、HTML を解析する一般的な方法が 3 つあります。それは、正規表現解析、XPath 解析、および CSS セレクタ解析です。

HTML ページの構造

HTML 解析方法を説明する前に、HTML ページの基本構造を理解することが前提条件です。ブラウザで Web サイトを開き、マウスの右クリック メニューから [Web ページのソース コードの表示] メニュー項目を選択すると、Web ページに対応する HTML コードが表示されます。 HTML コードは通常、タグ、属性、テキストで構成されます。ラベルにはページに表示されるコンテンツが含まれ、属性はラベル情報を補足し、テキストはラベルによって表示されるコンテンツです。以下は、単純な HTML ページ コード構造の例です。

<!DOCTYPE html>
<html>
    <head>
        <!-- head 标签中的内容不会在浏览器窗口中显示 -->
        <title>这是页面标题</title>
    </head>
    <body>
        <!-- body 标签中的内容会在浏览器窗口中显示 -->
        <h2>这是一级标题</h2>
        <p>这是一段文本</p>
    </body>
</html>
ログイン後にコピー

この HTML ページ コード例では、<!DOCTYPE html> はドキュメント タイプ宣言です。 タグはページ全体のルートタグであり、<body>## のサブタグです。 # タグを配置します。 <body> タグの下のコンテンツがブラウザ ウィンドウに表示されます。コンテンツのこの部分は Web ページの本体であり、&lt の下のコンテンツはブラウザ ウィンドウに表示されます。 ;head> タグはブラウザ ウィンドウには表示されません。ブラウザ ウィンドウには表示されますが、通常 Web ページのヘッダーと呼ばれる、ページの重要なメタ情報が含まれています。 HTML ページの一般的なコード構造は次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;!-- 页面的元信息,如字符编码、标题、关键字、媒体查询等 --&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- 页面的主体,显示在浏览器窗口中的内容 --&gt; &lt;/body&gt; &lt;/html&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div> タグ、カスケード スタイル シート (CSS)、および JavaScript は、HTML ページを構成する 3 つの基本コンポーネントです。タグはページに表示されるコンテンツを運ぶために使用され、CSS はページのレンダリングを担当し、JavaScript はページのインタラクティブな動作を制御するために使用されます。 HTML ページを解析するには、もともと XML のクエリ構文である XPath 構文を使用できます。HTML タグの階層構造に基づいて、コンテンツやタグ内のタグ属性を抽出できます。さらに、CSS セレクターを使用してページを見つけることもできます. 要素は、CSS を使用してページ要素をレンダリングするのと同じです。

XPath 解析

XPath は、XML (eXtensible Markup Language) ドキュメント内の情報を検索するための構文です。XML は HTML に似ており、タグを使用してデータを運ぶタグ言語です。その理由は、XML タグは拡張可能でカスタマイズ可能であり、XML にはより厳格な構文要件があるためです。 XPath はパス式を使用して XML ドキュメント内のノードまたはノード セットを選択します。ここで言及されるノードには、要素、属性、テキスト、名前空間、処理命令、コメント、ルート ノードなどが含まれます。

XPath パス式はファイル パス構文に似ており、「/」と「//」を使用してノードを選択できます。ルート ノードを選択する場合は単一のスラッシュ「/」を使用でき、任意の位置のノードを選択する場合は二重スラッシュ「//」を使用できます。例えば、「/bookstore/book」は、ルートノードbookstoreの下にあるすべてのbookサブノードを選択することを意味し、「//title」は、任意の位置のタイトルノードを選択することを意味します。

XPath は述語を使用してノードをフィルタリングすることもできます。角括弧内のネストされた式には、数値、比較演算子、または述語として機能する関数呼び出しを指定できます。たとえば、「/bookstore/book[1]」は書店の最初の子ノード book を選択することを意味し、「//book[@lang]」は lang 属性を持つすべての book ノードを選択することを意味します。

XPath 関数には、文字列関数、数学関数、論理関数、ノード関数、シーケンス関数などの関数が含まれており、これらの関数を使用して、ノードの選択、値の計算、データ型の変換、その他の操作を行うことができます。たとえば、「string-length(string)」関数は文字列の長さを返すことができ、「count(node-set)」関数はノード セット内のノードの数を返すことができます。

以下の例を使用して、XPath を使用してページを解析する方法を説明します。次の XML ファイルがあるとします。

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book>
      <title lang="eng">Harry Potter</title>
      <price>29.99</price>
    </book>
    <book>
      <title lang="zh">Learning XML</title>
      <price>39.95</price>
    </book>
</bookstore>
ログイン後にコピー

この XML ファイルでは、以下に示すように XPath 構文を使用してドキュメント内のノードを取得できます。

#パス式結果##/bookstoreSelectルート要素の書店。注: パスがスラッシュ ( / ) で始まる場合、このパスは常に要素への絶対パスを表します。 ドキュメント内の位置に関係なく、すべての book 子要素を選択します。 lang という名前の属性をすべて選択します。 bookstore の最初の子ノード book を選択します。
//book
//@lang
/bookstore/book[1]

CSS 选择器解析

通过HTML标签的属性和关系来定位元素的方式被称为CSS选择器。根据 HTML 标签的层级结构、类名、id 等属性能够确定元素的位置。在 Python 中,我们可以使用 BeautifulSoup 库来进行 CSS 选择器解析。

我们接下来会举一个例子,讲解如何运用 CSS 选择器来分析页面。假设我们有如下的 HTML 代码:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>这是页面标题</title>
</head>
<body>
	<div class="content">
		<h2>这是一级标题</h2>
		<p>这是一段文本</p>
	</div>
	<div class="footer">
		<p>版权所有 © 2021</p>
	</div>
</body>
</html>
ログイン後にコピー
ログイン後にコピー

我们可以使用如下所示的 CSS 选择器语法来选取页面元素。

选择器结果
div.content选取 class 为 content 的 div 元素。
h2选取所有的 h2 元素。
div.footer p选取 class 为 footer 的 div 元素下的所有 p 元素。
[href]选取所有具有 href 属性的元素。

正则表达式解析

用正则表达式可以解析 HTML 页面,从而实现文本的匹配、查找和替换。使用 re 模块可以进行 Python 的正则表达式解析。

下面我们通过一个例子来说明如何使用正则表达式对页面进行解析。假设我们有如下的 HTML 代码:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>这是页面标题</title>
</head>
<body>
	<div class="content">
		<h2>这是一级标题</h2>
		<p>这是一段文本</p>
	</div>
	<div class="footer">
		<p>版权所有 © 2021</p>
	</div>
</body>
</html>
ログイン後にコピー
ログイン後にコピー

我们可以使用如下所示的正则表达式来选取页面元素。

import re
html = '''
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>这是页面标题</title>
</head>
<body>
	<div class="content">
		<h2>这是一级标题</h2>
		<p>这是一段文本</p>
	</div>
	<div class="footer">
		<p>版权所有 © 2021</p>
	</div>
</body>
</html>
'''
pattern = re.compile(r'
.*?

(.*?)

.*?

(.*?)

.*?
', re.S) match = re.search(pattern, html) if match: title = match.group(1) text = match.group(2) print(title) print(text)
ログイン後にコピー

以上代码中,我们使用 re 模块的 compile 方法来编译正则表达式,然后使用 search 方法来匹配 HTML 代码。在正则表达式中,“.*?”表示非贪婪匹配,也就是匹配到第一个符合条件的标签就停止匹配,而“re.S”表示让“.”可以匹配包括换行符在内的任意字符。最后,我们使用 group 方法来获取匹配的结果。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTML:それはプログラミング言語か何か他のものですか? HTML:それはプログラミング言語か何か他のものですか? Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

CentosのPytorchのGPUサポートはどのようにサポートされていますか CentosのPytorchのGPUサポートはどのようにサポートされていますか Apr 14, 2025 pm 06:48 PM

Pytorch GPUアクセラレーションを有効にすることで、CentOSシステムでは、PytorchのCUDA、CUDNN、およびGPUバージョンのインストールが必要です。次の手順では、プロセスをガイドします。CUDAおよびCUDNNのインストールでは、CUDAバージョンの互換性が決定されます。NVIDIA-SMIコマンドを使用して、NVIDIAグラフィックスカードでサポートされているCUDAバージョンを表示します。たとえば、MX450グラフィックカードはCUDA11.1以上をサポートする場合があります。 cudatoolkitのダウンロードとインストール:nvidiacudatoolkitの公式Webサイトにアクセスし、グラフィックカードでサポートされている最高のCUDAバージョンに従って、対応するバージョンをダウンロードしてインストールします。 cudnnライブラリをインストールする:

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

ミニオペンCentosの互換性 ミニオペンCentosの互換性 Apr 14, 2025 pm 05:45 PM

MINIOオブジェクトストレージ:CENTOSシステムの下での高性能展開Minioは、Amazons3と互換性のあるGO言語に基づいて開発された高性能の分散オブジェクトストレージシステムです。 Java、Python、JavaScript、Goなど、さまざまなクライアント言語をサポートしています。この記事では、CentosシステムへのMinioのインストールと互換性を簡単に紹介します。 Centosバージョンの互換性Minioは、Centos7.9を含むがこれらに限定されない複数のCentosバージョンで検証されています。

NginxをCentosにインストールする方法 NginxをCentosにインストールする方法 Apr 14, 2025 pm 08:06 PM

NGINXのインストールをインストールするには、次の手順に従う必要があります。開発ツール、PCRE-Devel、OpenSSL-Develなどの依存関係のインストール。 nginxソースコードパッケージをダウンロードし、それを解凍してコンパイルしてインストールし、/usr/local/nginxとしてインストールパスを指定します。 nginxユーザーとユーザーグループを作成し、アクセス許可を設定します。構成ファイルnginx.confを変更し、リスニングポートとドメイン名/IPアドレスを構成します。 nginxサービスを開始します。依存関係の問題、ポート競合、構成ファイルエラーなど、一般的なエラーに注意する必要があります。パフォーマンスの最適化は、キャッシュをオンにしたり、ワーカープロセスの数を調整するなど、特定の状況に応じて調整する必要があります。

CentosでPytorchの分散トレーニングを操作する方法 CentosでPytorchの分散トレーニングを操作する方法 Apr 14, 2025 pm 06:36 PM

Pytorchの分散トレーニングでは、Centosシステムでトレーニングには次の手順が必要です。Pytorchのインストール:PythonとPipがCentosシステムにインストールされていることです。 CUDAバージョンに応じて、Pytorchの公式Webサイトから適切なインストールコマンドを入手してください。 CPUのみのトレーニングには、次のコマンドを使用できます。PipinstalltorchtorchtorchvisionTorchaudioGPUサポートが必要な場合は、CUDAとCUDNNの対応するバージョンがインストールされ、インストールに対応するPytorchバージョンを使用してください。分散環境構成:分散トレーニングには、通常、複数のマシンまたは単一マシンの複数GPUが必要です。場所

See all articles