国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
クラスのコーディング
});
$ crawler-> filter( 'img') - >それぞれ(function(crawler $ node){
SymfonyのDomcrawlerコンポーネントを使用してAjaxロードのコンテンツをスクレイプできますか?
ホームページ バックエンド開(kāi)発 PHPチュートリアル Symfony' s Domcrawlerでの畫像削り

Symfony' s Domcrawlerでの畫像削り

Feb 21, 2025 am 08:47 AM

Symfony' s Domcrawlerでの畫像削り

私の寫真家の友人は、インターネットから額縁の畫像を見(jiàn)つけてダウンロードするように私を懇願(yuàn)しました。私は最終的に、それらの多くが無(wú)料で利用できるWebページに著地しましたが、問(wèn)題がありました。すべての畫像を一緒にダウンロードするためのリンクは存在しませんでした。

畫像を個(gè)別にダウンロードするストレスを経験したくなかったので、このPHPクラスを書き、Webサイトで見(jiàn)つかったすべての畫像を見(jiàn)つけ、ダウンロードし、zipしました。

キーテイクアウト

    PHPクラスでは、SymfonyのDomcrawlerコンポーネントを使用して、Webページから畫像をスクレイプし、フォルダーにダウンロードして保存し、フォルダーのzipアーカイブを作成し、フォルダーを削除します。このクラスは、Webサイトから複數(shù)の畫像をダウンロードするプロセスを自動(dòng)化するように設(shè)計(jì)されています。
  • クラスには、5つの私有地と8つのパブリックメソッドが含まれています。プロパティは、フォルダー名、WebページURL、HTMLドキュメントコード、ZIPファイル名、操作ステータスなどの情報(bào)を保存します。メソッドには、フォルダーとファイル名を設(shè)定し、domcrawlerをインスタンス化し、畫像をダウンロードして保存し、zipファイルを作成し、フォルダーを削除し、操作ステータスを取得する機(jī)能が含まれます。
  • クラスを使用するには、すべての必要なファイルをAutoloadまたは明示的に含める必要があります。 SetFolderおよびSetFileNameメソッドは、それぞれの引數(shù)を使用して呼び出され、プロセスメソッドが呼び出され、クラスを機(jī)能させる必要があります。 domcrawlerコンポーネントとcreate_zip関數(shù)を含める必要があります。
  • クラスの仕組み
  • 畫像のURLを検索し、畫像をフォルダーにダウンロードして保存し、フォルダーのzipアーカイブを作成し、最後にフォルダーを削除します。
クラスは、SymfonyのDomCrawlerコンポーネントを使用して、Webページにあるすべての畫像リンクとZIPファイルを作成するカスタムZIP関數(shù)を検索します。 ZIP機(jī)能についてDavid Walshにクレジットします

クラスのコーディング

クラスは、5つの私有地と__ Construct Magicメソッドを含む8つのパブリックメソッドで構(gòu)成されています。

以下は、クラスのプロパティとその役割のリストです。

1。$フォルダー:削られた畫像を含むフォルダーの名前を保存します。

2。$ URL:WebページURLを保存します。

3。$ HTML:WebページのHTMLドキュメントコードを削減するために保存します。

4。$ filename:zipファイルの名前を保存します。 Symfony' s Domcrawlerでの畫像削り 5。$ステータス:操作のステータスを保存します。つまり、それが成功または失敗であった場(chǎng)合。

クラスの構(gòu)築を始めましょう。

上記の5つのプロパティを含むクラスのzipimagesを作成します。


URLを引數(shù)として受け入れる__construct Magicメソッドを作成します。

この方法は非常に自明です。

作成されたZIPアーカイブには、削り取られた畫像を含むフォルダーがあります。以下のSetFolderメソッドはこれを構(gòu)成します

デフォルトでは、フォルダー名は畫像に設(shè)定されていますが、メソッドは、フォルダー名を引數(shù)として単に渡すだけで、フォルダーの名前を変更するオプションを提供します。

<span><span><?php
</span></span><span><span>class ZipImages {
</span></span><span>    <span>private $folder;
</span></span><span>    <span>private $url;
</span></span><span>    <span>private $html;
</span></span><span>    <span>private $fileName;
</span></span><span>    <span>private $status;</span></span>

setFileNameは、zipimagesに設(shè)定されたデフォルトの名前を使用してzipファイルの名前を変更するオプションを提供します。

この時(shí)點(diǎn)で、Symfony Crawlerコンポーネントをインスタンス化して畫像を検索し、すべての畫像をフォルダーにダウンロードして保存します。
<span>public function __construct($url) {
</span>    <span>$this->url = $url; 
</span>    <span>$this->html = file_get_contents($this->url);
</span>    <span>$this->setFolder();
</span><span>}</span>

ダウンロードが完了したら、カスタムcreate_zip関數(shù)を使用して畫像フォルダーをzipアーカイブに圧縮します。

<span>public function setFolder($folder="image") {
</span>    <span>// if folder doesn't exist, attempt to create one and store the folder name in property $folder
</span>    <span>if(!file_exists($folder)) {
</span>        <span>mkdir($folder);
</span>    <span>}
</span>    <span>$this->folder = $folder;
</span><span>}</span>

最後に、ZIPファイルが作成された後に作成されたフォルダーを削除します。

<span>public function setFileName($name = "zipImages") {
</span>    <span>$this->fileName = $name;
</span><span>}</span>
操作のステータスを取得します。つまり、成功した場(chǎng)合、またはエラーが発生した場(chǎng)合

上記のすべてのメソッドを処理します。
<span>public function domCrawler() {
</span>    <span>//instantiate the symfony DomCrawler Component
</span>    <span>$crawler = new Crawler($this->html);
</span>    <span>// create an array of all scrapped image links
</span>    <span>$result = $crawler
</span>        <span>->filterXpath('//img')
</span>        <span>->extract(array('src'));
</span>
<span>// download and save the image to the folder 
</span>    <span>foreach ($result as $image) {
</span>        <span>$path = $this->folder."/".basename($image);
</span>        <span>$file = file_get_contents($image);
</span>        <span>$insert = file_put_contents($path, $file);
</span>        <span>if (!$insert) {
</span>            <span>throw new <span>\Exception</span>('Failed to write image');
</span>        <span>}
</span>    <span>}
</span><span>}</span>

githubから完全なクラスをダウンロードできます。
<span>public function createZip() {
</span>    <span>$folderFiles = scandir($this->folder);
</span>    <span>if (!$folderFiles) {
</span>        <span>throw new <span>\Exception</span>('Failed to scan folder');
</span>    <span>}
</span>    <span>$fileArray = array();
</span>    <span>foreach($folderFiles as $file){
</span>        <span>if (($file != ".") && ($file != "..")) {
</span>            <span>$fileArray[] = $this->folder."/".$file;
</span>        <span>}
</span>    <span>}
</span>
    <span>if (create_zip($fileArray, $this->fileName.'.zip')) {
</span>        <span>$this->status = <span><span><<<HTML</span>
</span></span><span>File successfully archived. <a href="<span><span>$this->fileName</span>.zip">Download it now</a>
</span></span><span><span>HTML<span>;</span></span>
</span>    <span>} else {
</span>        <span>$this->status = "An error occurred";
</span>    <span>}
</span><span>}</span>

クラス依存関係

クラスが機(jī)能するには、domcrawlerコンポーネントとcreate_zip関數(shù)を含める必要があります。この関數(shù)のコードをこちらからダウンロードできます。
<span>public function deleteCreatedFolder() {
</span>    <span>$dp = opendir($this->folder) or die ('ERROR: Cannot open directory');
</span>    <span>while ($file = readdir($dp)) {
</span>        <span>if ($file != '.' && $file != '..') {
</span>            <span>if (is_file("<span><span>$this->folder</span>/<span>$file</span>"</span>)) {
</span>                <span>unlink("<span><span>$this->folder</span>/<span>$file</span>"</span>);
</span>            <span>}
</span>        <span>}
</span>    <span>}
</span>    <span>rmdir($this->folder) or die ('could not delete folder');
</span><span>}</span>

次の要求ステートメントをComposer.jsonに追加するだけで、Composerを介してDomcrawlerコンポーネントをダウンロードしてインストールします。

$ php composer.pharインストールを?qū)g行してライブラリをダウンロードし、ベンダー/autoload.php autoloaderファイルを生成します。 クラスを使用して

SetFolderを呼び出し、SetFileNameメソッドを呼び出して、それぞれの引數(shù)を渡します。フォルダー名を変更する必要がある場(chǎng)合にのみ、SetFolderメソッドを呼び出します。 クラスを機(jī)能させるためにプロセスメソッドを呼び出してください。
<span>public function getStatus() {
</span>    <span>echo $this->status;
</span><span>}</span>

  • 要約
  • この記事では、ダウンロードした畫像をZIPアーカイブに自動(dòng)的に圧縮するシンプルなPHP畫像スクレーパーを作成する方法を?qū)Wびました。改善のための代替ソリューションまたは提案がある場(chǎng)合は、以下のコメントに殘してください。すべてのフィードバックは大歓迎です!
  • SymfonyのDomcrawlerでの畫像のスクレイピングに関するよくある質(zhì)問(wèn)(FAQ)
  • SymfonyのDomcrawlerコンポーネントをインストールするにはどうすればよいですか?簡(jiǎn)単です。 PHPの依存関係管理ツールであるComposerを使用できます。プロジェクトディレクトリで次のコマンドを?qū)g行します。ComposerはSymfony/Dom-Crawlerを必要とします。これにより、domcrawlerコンポーネントが依存関係とともにダウンロードしてインストールされます。$ crawler = new crawler($ html);

    $ crawler-> filter( 'img') - >それぞれ(function(crawler $ node){
    echo $ node-> attr( 'src');
    });

    symfonyのdomcrawlerコンポーネントを使用できますかlaravel?

    はい、Laravelを使用したSymfonyのDomcrawlerコンポーネントを使用できます。 LaravelのHTTPテスト機(jī)能は、実際にはフードの下にDomcrawlerコンポーネントを使用しています。これは、同じ方法とテクニックを使用して、LaravelテストでHTMLコンテンツを橫斷および操作できることを意味します。

    SymfonyのDomcrawlerコンポーネントを使用して要素を選択するにはどうすればよいですか?フィルター、FilterXPath、SelectLinkなどの要素を選択します。これらの方法では、それぞれタグ名、Xpath式、またはリンクテキストに基づいて要素を選択できます。

    SymfonyのDomcrawlerコンポーネントを使用して要素のコンテンツを変更できますか? SymfonyのDomcrawlerコンポーネントを使用して、要素の內(nèi)容を変更します。各メソッドにより、選択した各要素を反復(fù)し、その操作を?qū)g行できます。たとえば、次のような畫像要素のSRC屬性を変更できます。 attr( 'src'、 'new-image.jpg');

    });

    symfonyを使用するときにエラーと例外を処理するにはどうすればよいですかdomcrawlerコンポーネント?

    $ crawler-> filter( 'img') - >それぞれ(function(crawler $ node){

    echo $ node-> attr( 'src');

    });

    SymfonyのDomcrawlerコンポーネントを使用してAjaxロードのコンテンツをスクレイプできますか?

    殘念ながら、SymfonyのDomcrawlerコンポーネントは、JavaScriptを?qū)g行しないため、Ajaxにロードされたコンテンツを直接スクレイすることはできません。ただし、GuzzleやGoutteなどのツールをDomcrawlerコンポーネントと組み合わせて使用??して、HTTPリクエストを送信し、Ajax-Loadedコンテンツを処理できます。

以上がSymfony&#x27; s Domcrawlerでの畫像削りの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPに認(rèn)証と承認(rèn)を?qū)g裝するにはどうすればよいですか? PHPに認(rèn)証と承認(rèn)を?qū)g裝するにはどうすればよいですか? Jun 20, 2025 am 01:03 AM

tosecurelyhandLeauthenticationAndauthorizationInizationInization、followTheSteps:1.LwayShashPasswordswithPassword_hash()andverifyusingpassword_verify()、usepreparedStatementStatementStatementStatementStatementStain、andstoreUserdatain $ _SessionAfterlogin.2.implementRementRementRementRementRementRementRementRole

PHPでファイルアップロードを安全に処理するにはどうすればよいですか? PHPでファイルアップロードを安全に処理するにはどうすればよいですか? Jun 19, 2025 am 01:05 AM

PHPでファイルアップロードを安全に処理するために、コアはファイルタイプを確認(rèn)し、ファイルの名前を変更し、権限を制限することです。 1。Finfo_File()を使用して実際のMIMEタイプを確認(rèn)し、Image/JPEGなどの特定のタイプのみが許可されます。 2。uniqid()を使用してランダムファイル名を生成し、非webルートディレクトリに保存します。 3. PHP.iniおよびHTMLフォームを介してファイルサイズを制限し、ディレクトリ権限を0755に設(shè)定します。 4. Clamavを使用してマルウェアをスキャンしてセキュリティを強(qiáng)化します。これらの手順は、セキュリティの脆弱性を効果的に防止し、ファイルのアップロードプロセスが安全で信頼性が高いことを確認(rèn)します。

PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? Jun 19, 2025 am 01:07 AM

PHPでは、==と==の主な違いは、タイプチェックの厳格さです。 ==タイプ変換は比較の前に実行されます。たとえば、5 == "5"はtrueを返します。===リクエストは、trueが返される前に値とタイプが同じであることを要求します。たとえば、5 === "5"はfalseを返します。使用シナリオでは、===はより安全で、最初に使用する必要があります。==は、タイプ変換が必要な場(chǎng)合にのみ使用されます。

PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? Jun 19, 2025 pm 05:13 PM

PHPで基本的な數(shù)學(xué)操作を使用する方法は次のとおりです。1。追加標(biāo)識(shí)は、整數(shù)と浮動(dòng)小數(shù)點(diǎn)數(shù)をサポートし、変數(shù)にも使用できます。文字列番號(hào)は自動(dòng)的に変換されますが、依存関係には推奨されません。 2。減算標(biāo)識(shí)の使用 - 標(biāo)識(shí)、変數(shù)は同じであり、タイプ変換も適用されます。 3.乗算サインは、數(shù)字や類似の文字列に適した標(biāo)識(shí)を使用します。 4.分割はゼロで割らないようにする必要がある分割 /標(biāo)識(shí)を使用し、結(jié)果は浮動(dòng)小數(shù)點(diǎn)數(shù)である可能性があることに注意してください。 5.モジュラス標(biāo)識(shí)を採(cǎi)取することは、奇妙な數(shù)と偶數(shù)を判斷するために使用でき、負(fù)の數(shù)を処理する場(chǎng)合、殘りの兆候は配當(dāng)と一致しています。これらの演算子を正しく使用するための鍵は、データ型が明確であり、境界の狀況がうまく処理されるようにすることです。

PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? Jun 19, 2025 am 01:07 AM

はい、PHPは、特定の拡張機(jī)能またはライブラリを使用して、MongoDBやRedisなどのNOSQLデータベースと対話できます。まず、MongoDBPHPドライバー(PECLまたはComposerを介してインストール)を使用して、クライアントインスタンスを作成し、データベースとコレクションを操作し、挿入、クエリ、集約、その他の操作をサポートします。第二に、PredisライブラリまたはPhpredis拡張機(jī)能を使用してRedisに接続し、キー価値設(shè)定と取得を?qū)g行し、高性能シナリオにPhpredisを推奨しますが、Predisは迅速な展開(kāi)に便利です。どちらも生産環(huán)境に適しており、十分に文書化されています。

最新のPHP開(kāi)発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? 最新のPHP開(kāi)発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? Jun 23, 2025 am 12:56 AM

postaycurrentwithpdevellyments andbest practices、follow keynewsourceslikephp.netandphpweekly、egagewithcommunitiessonforums andconferences、keeptooling and gradivallyadoptnewfeatures、andreadorcontributeTopensourceprijeprijeprijeptrijeprijeprests.

PHPとは何ですか、そしてなぜそれがWeb開(kāi)発に使用されるのですか? PHPとは何ですか、そしてなぜそれがWeb開(kāi)発に使用されるのですか? Jun 23, 2025 am 12:55 AM

PhpBecamepopularforwebdevelopmentduetoitseaseaseaseaseasease、SeamlessintegrationWithhtml、widespreadhostingsupport、andalargeecosystemincludingframeworkelavelandcmsplatformslikewordspresspressinsinsionsisionsisionsisionsisionsionsionsisionsionsionsisionsisions

PHPタイムゾーンを設(shè)定する方法は? PHPタイムゾーンを設(shè)定する方法は? Jun 25, 2025 am 01:00 AM

tosettherighttimezoneInphp、usedate_default_timezone_set()functionthestthestofyourscriptwithavalididentifiersiersuchas'america/new_york'.1.usedate_default_timezone_set()beforeanydate/timefunctions.2.2.Altertentally、confuturethephp.inifilebyset.

See all articles