ホームページ バックエンド開発 Python チュートリアル リクエスト モジュールを使用してページ コンテンツをクロールする Python3 の詳細な例

リクエスト モジュールを使用してページ コンテンツをクロールする Python3 の詳細な例

Sep 26, 2017 am 10:39 AM
python3 requests 詳しい説明

この記事では主に、request モジュールを使用して python3 を使用してページ コンテンツをクロールする実際の方法を紹介します。興味のある方は学習してください。1. 私の個人用デスクトップ システムに pip

をインストールします。システムはデフォルトでは pip をインストールしません。後で request モジュールをインストールするために pip が使用されることを考慮して、ここでの最初のステップは pip をインストールすることです。

$ sudo apt install python-pip
ログイン後にコピー

インストールが成功しました。PIP バージョンを確認します:

$ pip -V
ログイン後にコピー


2. リクエストモジュールをインストールします

ここでは、pip を通じてインストールしました:

$ pip install requests
ログイン後にコピー


インポートを実行するエラーがない場合は、インストールが成功したことを意味します。

インストールが成功したかどうかを確認してください

3. beautifulsoup4をインストールします

Beautiful Soupは、HTMLまたはXMLファイルからデータを抽出できるPythonライブラリです。これにより、慣例的なドキュメント ナビゲーションと、お気に入りのコンバーターを使用してドキュメントを検索および変更する方法が可能になります。 Beautiful Soup を使用すると、数時間、あるいは数日間の作業を節約できます。

$ sudo apt-get install python3-bs4
ログイン後にコピー

注: ここでは python3 のインストール方法を使用しています。python2 を使用している場合は、次のコマンドを使用してインストールできます。

$ sudo pip install beautifulsoup4
ログイン後にコピー


4.リクエストモジュールの簡単な分析

1) リクエストを送信します

まず第一に、もちろん、リクエストモジュールをインポートする必要があります:

>>> import requests
ログイン後にコピー

次に、クロールされた対象の Web ページ。ここでは例として以下を取り上げます:

>>> r = requests.get('http://www.jb51.net/article/124421.htm')
ログイン後にコピー

ここでは、r という名前の応答オブジェクトが返されます。このオブジェクトから必要な情報はすべて取得できます。ここのgetはhttpのレスポンスメソッドなので、類推でput、delete、post、headに置き換えることもできます。

2) URL パラメータを渡す

URL のクエリ文字列として何らかのデータを渡したい場合があります。 URL を手動で構築する場合、データはキーと値のペアとして URL に配置され、その後に疑問符が続きます。たとえば、cnblogs.com/get?key=val のようになります。リクエストでは、params キーワード引数を使用して、これらのパラメータを文字列の辞書として提供できます。

たとえば、Google で「Python クローラー」というキーワードを検索する場合、newwindow (新しいウィンドウが開きます)、q および oq (検索キーワード) などのパラメーターを手動で URL に組み込むことができ、次のコードを使用できます。

>>> payload = {'newwindow': '1', 'q': 'python爬虫', 'oq': 'python爬虫'}

>>> r = requests.get("https://www.google.com/search", params=payload)
ログイン後にコピー

3) 応答コンテンツ

r.text または r.content を通じてページの応答コンテンツを取得します。

>>> import requests

>>> r = requests.get('https://github.com/timeline.json')

>>> r.text
ログイン後にコピー

リクエストはサーバーからのコンテンツを自動的にデコードします。ほとんどの Unicode 文字セットはシームレスにデコードできます。 r.text と r.content の違いについて少し追加します。簡単に言うと、

resp.content はバイナリデータであるバイト型を返します。テキストを取得したい場合は、r.text を使用します。写真やファイルを取得したい場合は、r.content を使用します。

4) Web ページのエンコーディングを取得します

>>> r = requests.get('http://www.cnblogs.com/')

>>> r.encoding

'utf-8'
ログイン後にコピー

5) 応答ステータス コードを取得します

応答ステータス コードを検出できます:


>>> r = requests.get('http://www.cnblogs.com/')

>>> r.status_code

200
ログイン後にコピー

5。最近 OA システムを導入しました。ここではその公式ドキュメント ページを例として、ページ内の記事タイトルやコンテンツなどの有用な情報のみをキャプチャします。

デモ環境


オペレーティングシステム: linuxmint

Python バージョン: python 3.5.2使用モジュール:requests、Beautifulsoup4

コードは次のとおりです:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
_author_ = 'GavinHsueh'

import requests
import bs4

#要抓取的目标页码地址
url = 'http://www.ranzhi.org/book/ranzhi/about-ranzhi-4.html'

#抓取页码内容,返回响应对象
response = requests.get(url)

#查看响应状态码
status_code = response.status_code

#使用BeautifulSoup解析代码,并锁定页码指定标签内容
content = bs4.BeautifulSoup(response.content.decode("utf-8"), "lxml")
element = content.find_all(id='book')

print(status_code)
print(element)
ログイン後にコピー
プログラムが実行され、クロール結果が返されます。

クロールは成功しました


クロール結果が文字化けする問題について

実は最初はシステムにデフォルトで付属しているpython2を直接使っていたのですが、この問題でかなり苦労しました返されたコンテンツのエンコードが文字化けしており、何度もグーグル検索しましたが、これらの解決策はどれも機能しません。 python2で「おかしくなった」ので、正直python3を使うしかありませんでした。 Python2 のクロールされたページのコンテンツが文字化けする問題について、私のような将来の世代が寄り道を避けるのに役立つよう、先輩方が経験を共有してくださることを歓迎します。

追記

Pythonにはクローラー関連のモジュールが数多くあり、requestsモジュール以外にもurllib、pycurl、tornadoなどがあります。それに比べて、requests モジュールは比較的シンプルで使いやすいと個人的に感じています。テキストを通じて、Python のリクエスト モジュールを使用してページ コンテンツをクロールする方法をすぐに学ぶことができます。私の能力には限界がありますので、もし記事に間違いがあれば、お気軽にお知らせください。また、Python でクロールされたページの内容についてご質問がございましたら、ぜひご連絡ください。

以上がリクエスト モジュールを使用してページ コンテンツをクロールする Python3 の詳細な例の詳細内容です。詳細については、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)

C++のmode関数の詳しい解説 C++のmode関数の詳しい解説 Nov 18, 2023 pm 03:08 PM

C++ のモード関数の詳細な説明 統計において、モードとは、一連のデータ内で最も頻繁に現れる値を指します。 C++ 言語では、モード関数を記述することによって、任意のデータセット内のモードを見つけることができます。モード関数はさまざまな方法で実装できます。一般的に使用される 2 つの方法を以下で詳しく紹介します。 1 つ目の方法は、ハッシュ テーブルを使用して各数値の出現回数をカウントすることです。まず、各数値をキー、出現回数を値とするハッシュ テーブルを定義する必要があります。次に、特定のデータセットに対して次を実行します。

Win11での管理者権限の取得について詳しく解説 Win11での管理者権限の取得について詳しく解説 Mar 08, 2024 pm 03:06 PM

Windows オペレーティング システムは世界で最も人気のあるオペレーティング システムの 1 つであり、その新バージョン Win11 が大きな注目を集めています。 Win11 システムでは、管理者権限の取得は重要な操作であり、管理者権限を取得すると、ユーザーはシステム上でより多くの操作や設定を実行できるようになります。この記事では、Win11システムで管理者権限を取得する方法と、権限を効果的に管理する方法を詳しく紹介します。 Win11 システムでは、管理者権限はローカル管理者とドメイン管理者の 2 種類に分かれています。ローカル管理者はローカル コンピュータに対する完全な管理権限を持っています

Oracle SQLの除算演算の詳細説明 Oracle SQLの除算演算の詳細説明 Mar 10, 2024 am 09:51 AM

OracleSQL の除算演算の詳細な説明 OracleSQL では、除算演算は一般的かつ重要な数学演算であり、2 つの数値を除算した結果を計算するために使用されます。除算はデータベース問合せでよく使用されるため、OracleSQL での除算演算とその使用法を理解することは、データベース開発者にとって重要なスキルの 1 つです。この記事では、OracleSQL の除算演算に関する関連知識を詳細に説明し、読者の参考となる具体的なコード例を示します。 1. OracleSQL での除算演算

C++の剰余関数の詳しい解説 C++の剰余関数の詳しい解説 Nov 18, 2023 pm 02:41 PM

C++ の剰余関数の詳しい説明 C++ では、剰余演算子 (%) を使用して、2 つの数値を除算した余りを計算します。これは、オペランドが任意の整数型 (char、short、int、long など) または浮動小数点数型 (float、double など) になる二項演算子です。剰余演算子は、被除数と同じ符号の結果を返します。たとえば、整数の剰余演算の場合、次のコードを使用して実装できます。

Vue.nextTick関数の使い方と非同期更新での応用について詳しく解説 Vue.nextTick関数の使い方と非同期更新での応用について詳しく解説 Jul 26, 2023 am 08:57 AM

Vue.nextTick 関数の使い方と非同期更新での応用について詳しく説明 Vue の開発では、DOM を変更した直後にデータを更新したり、関連する操作が必要になったりするなど、データを非同期で更新する必要がある状況によく遭遇します。データが更新された直後に実行されます。このような問題を解決するために登場したのが、Vue が提供する .nextTick 関数です。この記事では、Vue.nextTick 関数の使用法を詳しく紹介し、コード例と組み合わせて、非同期更新でのアプリケーションを説明します。 1.Vue.nex

PHPモジュロ演算子の役割と使い方を詳しく解説 PHPモジュロ演算子の役割と使い方を詳しく解説 Mar 19, 2024 pm 04:33 PM

PHP のモジュロ演算子 (%) は、2 つの数値を除算した余りを取得するために使用されます。この記事では、モジュロ演算子の役割と使用法について詳しく説明し、読者の理解を深めるために具体的なコード例を示します。 1. モジュロ演算子の役割 数学では、整数を別の整数で割ると、商と余りが得られます。たとえば、10 を 3 で割ると、商は 3 になり、余りは 1 になります。モジュロ演算子は、この剰余を取得するために使用されます。 2. モジュロ演算子の使用法 PHP では、% 記号を使用してモジュロを表します。

Linuxシステムコールsystem()関数の詳細説明 Linuxシステムコールsystem()関数の詳細説明 Feb 22, 2024 pm 08:21 PM

Linux システム コール system() 関数の詳細説明 システム コールは、Linux オペレーティング システムの非常に重要な部分であり、システム カーネルと対話する方法を提供します。その中でも、system()関数はよく使われるシステムコール関数の一つです。この記事では、system() 関数の使用法を詳しく紹介し、対応するコード例を示します。システム コールの基本概念 システム コールは、ユーザー プログラムがオペレーティング システム カーネルと対話する方法です。ユーザープログラムはシステムコール関数を呼び出してオペレーティングシステムを要求します。

Linuxのcurlコマンドの詳しい説明 Linuxのcurlコマンドの詳しい説明 Feb 21, 2024 pm 10:33 PM

Linuxのcurlコマンドの詳細な説明 要約:curlは、サーバーとのデータ通信に使用される強力なコマンドラインツールです。この記事では、curl コマンドの基本的な使用法を紹介し、読者がコマンドをよりよく理解して適用できるように実際のコード例を示します。 1.カールとは何ですか? curl は、さまざまなネットワーク要求を送受信するために使用されるコマンド ライン ツールです。 HTTP、FTP、TELNETなどの複数のプロトコルをサポートし、ファイルアップロード、ファイルダウンロード、データ送信、プロキシなどの豊富な機能を提供します。

See all articles