ホームページ バックエンド開発 Python チュートリアル Pythonは簡単なクローラー機能を実装します

Pythonは簡単なクローラー機能を実装します

Dec 13, 2016 pm 01:32 PM

毎日インターネットを閲覧していると、素敵な写真を目にすることが多く、その写真を保存してダウンロードしたり、デスクトップの壁紙やデザイン素材として使用したくなります。

最も一般的な方法は、マウスを右クリックして [名前を付けて保存] を選択することです。ただし、一部の画像には、マウスを右クリックしたときに名前を付けて保存するオプションがありません。スクリーンショット ツールを使用してキャプチャすることもできますが、これにより画像の鮮明さが低下します。よし〜!実際、右クリックしてページのソース コードを表示するのは非常に便利です。

Pythonを使用してこのような単純なクローラー機能を実装し、必要なコードをローカルでクロールできます。 Python を使用してこのような機能を実装する方法を見てみましょう。

まず、ページ全体のデータを取得します

まず、ダウンロードする画像のページ全体の情報を取得できます。

getjpg.py

#coding=utf-8
import urllib

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

html = getHtml("http://tieba.baidu.com/p/2738151262")

print html
ログイン後にコピー

Urllib モジュールは、Web ページのデータを読み取るためのインターフェイスを提供します。ローカル ファイルを読み取るのと同じように、www と ftp 上のデータを読み取ることができます。まず、getHtml() 関数を定義します。

urllib.urlopen() メソッドは、URL アドレスを開くために使用されます。

read()メソッドは、URL上のデータを読み取り、getHtml()関数にURLを渡し、ページ全体をダウンロードするために使用されます。プログラムを実行すると、Web ページ全体が印刷されます。

次に、ページ内で必要なデータをフィルターします

Python には非常に強力な正規表現が用意されています。まず、Python の正規表現について少し知る必要があります。

Baidu Tieba でいくつかの美しい壁紙を見つけて、前のセクションに移動してツールを表示するとします。次のような画像のアドレスが見つかりました: src=”http://imgsrc.baidu.com/forum...jpg” pic_ext=”jpeg”

Pythonは簡単なクローラー機能を実装します

コードを次のように変更します:

import re
import urllib

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    return imglist      
   
html = getHtml("http://tieba.baidu.com/p/2460150866")
print getImg(html)
ログイン後にコピー

getImg() 関数も、取得したページ全体で必要な画像リンクをフィルター処理するために作成されました。 re モジュールには主に正規表現が含まれています:

re.compile() は正規表現を正規表現オブジェクトにコンパイルできます

re.findall() メソッドは html 内の imgre (正規表現) を含むデータを読み取ります。

スクリプトを実行すると、ページ全体に含まれる画像のURLアドレスが取得されます。

3、ページのフィルタリングされたデータをローカルに保存します

for ループを通してフィルタリングされた画像アドレスをトラバースし、それをローカルに保存します。 コードは次のとおりです:

#coding=utf-8
import urllib
import re

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    x = 0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl,'%s.jpg' % x)
        x+=1


html = getHtml("http://tieba.baidu.com/p/2460150866")

print getImg(html)
ログイン後にコピー

ここでのコアは、 urllib.urlretrieve() メソッドを使用して、リモート データをローカルに直接ダウンロードします。

取得した画像の接続を for ループでたどります。画像のファイル名をより標準化するために、名前を変更するルールは x 変数に 1 を追加します。保存場所のデフォルトは、プログラムの保存ディレクトリです。

プログラムが完了すると、ローカルディレクトリにダウンロードされたファイルがディレクトリに表示されます。

Pythonは簡単なクローラー機能を実装します

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

正規表現とは何ですか? 正規表現とは何ですか? Mar 20, 2025 pm 06:25 PM

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

人気のあるPythonライブラリとその用途は何ですか? 人気のあるPythonライブラリとその用途は何ですか? Mar 21, 2025 pm 06:46 PM

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? 文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? Apr 01, 2025 pm 11:18 PM

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

See all articles