0}アフィリエイトで作る資産ブログホームプログラミングフレームワークLaravelCakePHP3APIGuzzle6収益化ブログ講座アクセスアップ対策アフィリエイトお問合せ【圧倒的バズ】Twitterバズで42万インプレッションを稼いだ経緯まとめ【圧倒的バズ】Twitterバズで42万インプレッションを稼いだ経緯まとめども!でびきん(@debikingz)です。先日、Twitterでツイートしたところ、見事にバズって3日間で42万インプレッション(PV)を出してをTwitterで紹介しましたところ、思いのほか反響が大きかったので、もう少し突っ込んで実www.x-tb.club【圧倒的バズ】Twitterバズで42万インプレッションを稼いだ経緯まとめ【圧倒的バズ】Twitterバズで42万インプレッションを稼いだ経緯まとめども!でびきん(@debikingz)です。その1PHPでクローラーってどうやるの?よく聞かれます。アフィリエイターの人とか良く聞かれますね、PHP覚えるとっかかりにでもなれば良いと思っているので、スクレイピングの方法を紹介したいと思います。この講座は長くなると思うので3...dstrikes.net2018.03.24少しはクローラーの流れを掴んで貰ったかと思います、ね?意外と簡単ですよね。実際にはブラウザからのアクセスじゃないと弾くとか表示が違うとか色々細かい問題も出てくると思います。初心者でも作れるクローラー講座の第2回目では、Guzzleの使い方を深く知ってもっと色々出来るようになれば、そう言った問題も少しは回避出来るようになるかと思います。前回ではYahooJapanのトレンドキーワードを一つ拾う時にX-Pathで拾ってみました。実際にはもっと色々な部分を拾ったり、アンカー要素全部欲しい時とかもあります。今回はもう少しクローラーについて知識を深めて行きましょう。実はGuzzleのクローリング機能と言うのはSymfonyの機能の一部を利用しています。前から知っていたのですがGuzzleの基本的な使い方として知って置けば良いかな程度で考えていたのですが、ライブラリインストール時に違和感が出るので説明しておきます。クローラーは厳密にはSymfony/DomCrawlerと言うライブラリを使用して行っています。Symfonyと言う大型フレームワークは有名だからPHPでフレームワークを触って開発しているような人は知っていると思います。技術的な情報が欲しい時はGuzzleで検索するよりもSymfony/DomCrawlerで検索した方が情報が沢山出てくると思います。クローラー開発に行き詰まった時は、このキーワードでググるべきです。DomCrawlerの使い方Symfony/Domcrawlerの基本的な使い方は日本ユーザー会のフォーラムにあります。https://docs.symfony.gr.jp/symfony2/components/dom_crawler.htmldocs.symfony.gr.jp前回と少し被りますがGuzzleをスタートさせる時にはお決まりのお作法コードを使います。Symfony\Component\DomCrawler\Crawler((string)$response->getBody());上記を使用し取得したURLに対してDomcrawlerを起動して情報をスクレイピングします。最終行の$response->getBody()が実行された時点でソースコードが$crawlerに全て格納されています。$node->attr(‘src’);で取得出来ます。$node->attr('href');});上記の場合はクロージャと言って無記名関数を利用した手法です。これを使う事によってページ内にあるH2タグを全て取得する事が出来ます。$crawler->selectLink('公式サイトへGo!')->link();要素は分からないけど、そこのタグが欲しい!と言う場合はLinkメソッドを利用して、文字列指定も出来ます。$form->getFiles();1行目のgetUriでActionの送信先のURLを取得します。2行目のmethodはGETかPOSTかを判別して取得します。3行目のgetValuesはFormに用意された要素を全て取得します。name属性の値など4行目はimageファイルなどの送信の必要性を調査してくれます。スクレイピングで並列処理を行う次はGuzzle6を使って同時に欲しいURLの情報を一気に取得します。言う事かと言うと、同時10アクセスでも20アクセスでも複数のクライアントを立ち上げて同時に処理出来ると言う事です。使い所としては、ページ内にある全てのリンク先が404になってないかの有効性を確認したり、リンク先に自サイトのURLがあるか?と言う事を調べる時にも役立ちます。掲載している画像のURL(src)が404になって表示されない等の状況を調べる事も出来ます。ここにDomcrawlerの解析内容を記述する}上記は楽天の人気商品ランキング(デイリー)のデータを取得する際のサンプルコードです。4ページ目まで一気に取得していますので、このプログラムを実行すると同時に4クライアント立ち上がり、一気に4つのページにアクセスし情報を取得してきます。あんなの使ったら余計にややこしくなるし処理が重くなるじゃん?って事でFile_get...dstrikes.net2017.09.27通信環境によって変わりますが大体2秒程度で全てのページを取得する事が出来ます。並列処理プログラム解説はじめの$urlからの連想配列でURLリストを生成しセットします。その後のForeachの部分でrequestAsyncメソッドを呼び出し$promisesの配列にセットします。$value);この時点ではまだクローラーは実行されていません。\GuzzleHttp\Promise\all($promises)->wait();上記の行でwait()メソッドを実行した時点で同時にクライアントが一気に立ち上がり$responsesに結果が格納されて行きます。ページの表示速度やボリュームによってバラバラなので必ず1から順番にデータが格納されていくわけではありません。(非同期(async処理)だからです)非同期のマルチクライアントの手法は他にも3種類ぐらいやり方がありますが、私が主に使ってて取り回しの良い方法が上記になりますので、その他の手法にも興味がある人は調べてみて下さい。$jar]);上記はCookieが必要なサイトで使用する場合、例えばログインした情報を持ちながら会員認証が必要なページをスクレイピングする場合などにCookieを有効にします。]]]);Method指定の部分をPOSTにする事でデータの送信や画像などのファイルのアップロードも出来ます。ログインの際にはCookieを有効にして情報を持ち回らないと別のページにアクセスしたい場合などは蹴られてしまいますから、Cookieを有効にしないとダメです。]]);ブラウザやリファラーなどのヘッダーを送信したい場合は上記のようにして設定します。これが無いとアクセスを拒否されるような事もありますので、そんな場合はChromeやSafariなどのブラウザ情報を送信してやるとうまく行く場合もあります。スマホ専用ページなどにアクセスする場合は、もちろんiPhoneなどのスマホの環境変数をヘッダーとして送信すればOKです。まとめスクレイピングは普通にブラウザからアクセスする場合よりも数段早いです。早いかと言うと、Guzzle6を使ったアクセスではソースコードだけの取得になるからです。画像やCSSやJSなどのファイルはソースとして記述されているだけで実際には目的のURLにあるHTMLのファイルのソースだけを取得してますから、クローラーの方が取得が早いと言うわけです。クローラーは同時に10でも30でもクライアントを立ち上げてアクセスしに行きますから人間が操作する何百倍もの速度で処理を完了させます。レンタルサーバーでクローラーを運用する際に注意して欲しいのは、同時にアクセスが可能だからと言って並列処理を一気に1000クライアントとか2000クライアントとか立ち上げて回すと、さすがにレンタルサーバー屋さんから警告されたり怒られたり、最悪の場合は契約解除されてしまったりしますから、サーバー負荷に注意しながら運用するべきです。次回の講座では、クローラーを使ったデータを基にサイトを構築するコツを紹介しています。同時接続シェアするTwitterFacebookはてブPocketLINEdevisenseをフォローするdevisense稼げ!アフィリエイトパワーズ関連記事CakePHP3CakePHP3で単一ページを作る方法CakePHPは色々出来て便利ですね。言う初歩的な疑問にぶち当たったので作ってみました。その1PHPでクローラーってどうやるの?よく聞かれます。アフィリエイターの人とか良く聞かれますね、PHP覚えるとっかかりにでもなれば良いと思っているので、スクレイピングの方法を紹介したいと思います。この講座は長くなると思うので3...CakePHP3【CakePHP3】Controllerでの表示関係とTemplateのお話ようやくCakePHP3が理解出来てきてある程度、自由に触れるかな?って言う手ごたえを感じています。本記事ではWordPressの高速化の原理を解説すると共にその構造と高速化の原理について調べた事をサーバーの仕組みとか分からない人でも分かるようにまとめてみました。私もPHP初心者の頃はハッシュ化の意味は分かっていたけど使いどころが全然分かって居なかったのです。簡単に言うとハッシュ化って言うのはMD5やSHA1みたいな事で要するに【暗号化】なわけです。コメントをキャンセルメールアドレスが公開されることはありません。その12018.03.242018.06.16Laravelでマッチングサイトのソースを公開したらTwitterで話題に2018.03.232018.06.16カテゴリー別新着記事FREENANCE(フリーナンス)とは?フリーランスの為のお金と保険のサービス2019.06.142019.07.17独学プログラミングは無理?独学でも中卒でもプログラミングをマスターするのは可能です2019.02.042020.01.11未経験プログラマーが高収入を得る為の立ち回り術【年代別に解説】2019.01.312019.08.16未経験からIT企業に勤めた私がオススメするプログラミングスクール3社2018.12.052019.11.19独学でPHPをマスターしたが現場で即戦力になれるか不安じゃない?2018.11.252018.12.04スポンサーリンク。