tag:crieit.net,2005:https://crieit.net/tags/Web%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC/feed 「Webクローラー」の記事 - Crieit Crieitでタグ「Webクローラー」に投稿された最近の記事 2021-05-20T18:40:12+09:00 https://crieit.net/tags/Web%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC/feed tag:crieit.net,2005:PublicArticle/17040 2021-04-30T13:01:19+09:00 2021-05-20T18:40:12+09:00 https://crieit.net/posts/Python-Selenium-Web 【Pythonクローラー入門】SeleniumによるWebクローラーの開発 <p><a href="https://crieit.now.sh/upload_images/64b1ef6363c1052be6d7ddf2ea00ee8d608b8095e7517.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/64b1ef6363c1052be6d7ddf2ea00ee8d608b8095e7517.png?mw=700" alt="image" /></a><br /> 元記事:<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/build-a-web-crawler-with-selenium-and-python/">https://www.octoparse.jp/blog/build-a-web-crawler-with-selenium-and-python/</a></p> <p>Webサイトから大量のデータをできるだけ早く取得する必要があるとします。それぞれのWebサイトに手動でアクセスして、コピペでデータを取得することなく、どうやって自動的にデータを取得するのでしょうか?その答えが「<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/web-scraping/">Webスクレイピング</a>」です。Webスクレイピングに通じて、この作業を自動化にしてくれます。</p> <p>今回はPythonでWebサイトからデータをクローニングして、CSVファイルに書き込むというようなWebクローラーを実際に作成してみましょう。</p> <h1 id="一、必要なPython開発環境を導入"><a href="#%E4%B8%80%E3%80%81%E5%BF%85%E8%A6%81%E3%81%AAPython%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E5%B0%8E%E5%85%A5">一、必要なPython開発環境を導入</a></h1> <p>Pythonには、プログラムを組むために便利な標準ライブラリが数多くあります。今回は、以下のライブラリを使用しています。</p> <p>・<strong>Selenium</strong> ーー ブラウザを自動的に操作するライブラリです。主にWebアプリケーションのテストやWebスクレイピングに利用されます。<br /> ・<strong>BeautifulSoup</strong> ーー HTMLおよびXMLドキュメントを解析するためのPythonパッケージです。<br /> ・<strong>csv</strong> ーー CSVフォーマットで保存するために使用されます。</p> <p>したがって、プログラミングを実戦する前に、以下の準備が必要となります。</p> <p>・Python 2.xまたはPython 3.xの環境<br /> ・Selenium、BeautifulSoup、csvライブラリの導入<br /> ・Google Chrome ブラウザ</p> <p>それでは、早速始めましょう!</p> <h1 id="二、ページ要素(HTMLドキュメント)の検証"><a href="#%E4%BA%8C%E3%80%81%E3%83%9A%E3%83%BC%E3%82%B8%E8%A6%81%E7%B4%A0%EF%BC%88HTML%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%EF%BC%89%E3%81%AE%E6%A4%9C%E8%A8%BC">二、ページ要素(HTMLドキュメント)の検証</a></h1> <p>Webサイトから、要素(HTMLドキュメント)を検証し、データがどのように構成されているかを分析する必要があります。HTML基礎知識は<a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/HTML_basics">こちらのリンク</a>で参照ください。今回はテーブルのデータを抽出するように試してみましょう。<br /> Ctrl + Shift + I を押して、テーブルの要素を指定すると、HTMLのソースコードに表示されます。<br /> <a href="https://crieit.now.sh/upload_images/12a12d2aa25da2bf82cbb073bf1f7083608b809f6da2a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/12a12d2aa25da2bf82cbb073bf1f7083608b809f6da2a.png?mw=700" alt="image" /></a></p> <p>したがって、テーブルの要素名は「table」と分かっています。<br /> なお、Webクローラーを構築するたびに、HTMLドキュメント内の要素を定位するため、xPathの知識が必要となります。xPathのチュートリアルはこちらのリンクからアクセスできます。</p> <h1 id="三、コードを書く"><a href="#%E4%B8%89%E3%80%81%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F">三、コードを書く</a></h1> <p><strong>1.まず、必要なライブラリをすべてインポートしましょう。</strong></p> <pre><code>import csv # csvモジュールをインポート from selenium import webdriver # selenium webdriver をインポート from bs4 import BeautifulSoup # BeautifulSoup をインポート </code></pre> <p><strong>2.Webdriverを使用する前に、chromedriverへのパスを設定する必要があります。</strong><br /> ※/path/to/chromedriverをWebdriverのパスに変更してください。</p> <pre><code>driver = webdriver.Chrome("/path/to/chromedriver") </code></pre> <p><strong>3.以下のコードを参照してURLを開いてください。</strong></p> <pre><code>driver.get("http://test-sites.octoparse.com/?page_id=192") </code></pre> <p><strong>4.URLを開くためのコードが書けたところで、いよいよWebサイトからデータを抽出します。</strong><br /> 先に述べたように、抽出したいデータは要素に入っています。データを持つ要素を探し出し、データを抽出します。<strong>以下のコードを参照してください。</strong></p> <pre><code>content = driver.page_source BS = BeautifulSoup(content, "html.parser") table = BS.findAll("table", {"class":"wp-block-table is-style-stripes"})[0] # テーブル"wp-block-table is-style-stripes"を指定 rows = table.findAll("tr") # テーブル中<tr>要素の内容を抽出 print(rows) # 抽出したHTMLドキュメントを検証 </code></pre> <p>最後に、web-scraping.pyで保存します。</p> <h1 id="四、コードを実行してデータを抽出する"><a href="#%E5%9B%9B%E3%80%81%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B">四、コードを実行してデータを抽出する</a></h1> <p>コードを実行して、必要なHTMLドキュメントを正しく抽出するかどうかを確認します。<br /> <a href="https://crieit.now.sh/upload_images/211873892ff67468d049cd39ce71f207608b80a981301.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/211873892ff67468d049cd39ce71f207608b80a981301.png?mw=700" alt="image" /></a></p> <h1 id="五、データを必要なフォーマットで保存"><a href="#%E4%BA%94%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E4%BF%9D%E5%AD%98">五、データを必要なフォーマットで保存</a></h1> <p>データを抽出した後、抽出したデータをCSV(Comma Separated Value)形式で保存します。そのため、コードに以下の内容を追加します。</p> <pre><code>with open("web-scraping.csv", "w", encoding='utf-8', newline=""​) as file: # ファイル名は「web-scraping.csv」を指定する writer = csv.writer(file) for row in rows: csvRow = [] for cell in row.findAll(['td', 'th']): # tdとth要素をループでファイルに書き込む csvRow.append(cell.get_text()) writer.writerow(csvRow) </code></pre> <h1 id="六、Pythonでスクレイピングしましょう"><a href="#%E5%85%AD%E3%80%81Python%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86">六、Pythonでスクレイピングしましょう</a></h1> <p>それは最終的なコードです。<br /> <a href="https://crieit.now.sh/upload_images/6d4e115c349fd675f94d3a069e648ed7608b80b39d9a9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6d4e115c349fd675f94d3a069e648ed7608b80b39d9a9.png?mw=700" alt="image" /></a></p> <p>追加した後、もう一度コード全体を実行してみてください。<br /> 抽出結果は「web-scraping.csv」というファイル名が作成され、このファイルに抽出されたデータが格納されます。<br /> <a href="https://crieit.now.sh/upload_images/7624ebafe7878a60c34a479e3962e454608b80ba7ff29.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7624ebafe7878a60c34a479e3962e454608b80ba7ff29.png?mw=700" alt="image" /></a></p> <h1 id="七、Octoparseでスクレイピングする方法"><a href="#%E4%B8%83%E3%80%81Octoparse%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95">七、Octoparseでスクレイピングする方法</a></h1> <p>プログラミングが苦手、或いは英語のコードばかりなので苦手意識を持っている方は、スクレイピングツールの<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/">Octoparse</a>はおすすめします。</p> <p>Octoparseは「<a target="_blank" rel="nofollow noopener" href="https://helpcenter.octoparse.jp/hc/ja/articles/360013561999-Octoparse%E3%82%92%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8B-">自動識別</a>」機能があるので、ページのURLを入力するだけで、Webページ上各項目のデータ(テキストとリンクを含む)、「次のページ」ボタン、「もっと見る」ボタン、およびページのスクロールダウンを自動的に検出し、タスク(Webクローラー)を自動的に生成することができます。</p> <p>早速ですが、Octoparseで自動化の魅力を体験してみましょう。</p> <p><strong>1.Octoparseを起動して、スクレイピングしたいWebページのURLを入力します。</strong><br /> 「抽出開始」 ボタンをクリックして進みます。<br /> <a href="https://crieit.now.sh/upload_images/761e0a72882545802c97a7319feeeef1608b80ce09f4e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/761e0a72882545802c97a7319feeeef1608b80ce09f4e.png?mw=700" alt="image" /></a></p> <p><strong>2.Octoparseでページが読み込みされたら、自動的にページ上の内容を識別します。</strong><br /> 自動識別とは、自動的にページ上の必要なデータを検出して識別するという役立つ機能です。ポイント&クリックをする必要はなく、Octoparseは自動的に処理します。<br /> <a href="https://crieit.now.sh/upload_images/2359f12975aa9a679363209c1c928c6b608b80d53c5a8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2359f12975aa9a679363209c1c928c6b608b80d53c5a8.png?mw=700" alt="image" /></a></p> <p><strong>3.識別が完了すると、データプレビューで識別したデータを表示され、確認してから「ワークフローの生成」ボタンを押します。</strong><br /> <a href="https://crieit.now.sh/upload_images/95661bba8fe25a46fc835456536461a8608b80ddddf58.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/95661bba8fe25a46fc835456536461a8608b80ddddf58.png?mw=700" alt="image" /></a></p> <p><strong>4.これで簡単にWebクローラーが作成しました!</strong><br /> 上の「実行」ボタンをクリックして、すぐデータを抽出できます。簡単ではないでしょうか。<br /> <a href="https://crieit.now.sh/upload_images/b0b0d3e60908ec44ecfc6aa732366d03608b80e4e4719.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b0b0d3e60908ec44ecfc6aa732366d03608b80e4e4719.png?mw=700" alt="image" /></a></p> <h1 id="八、まとめ"><a href="#%E5%85%AB%E3%80%81%E3%81%BE%E3%81%A8%E3%82%81">八、まとめ</a></h1> <p>Pythonでスクレイピングはそんなに簡単ではないので、学ぶ時間がなく、効率的にスクレイピングがしたい、プログラミングが苦手、或いは英語のコードばかりなので苦手意識を持っている方は<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/the-10-best-web-scraping-tools/">スクレイピングツール</a>はおすすめです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/?utm_source=8952&utm_medium=pic&utm_campaign=qitta"><a href="https://crieit.now.sh/upload_images/9211be13dbf84c6b98b0da0ecbffb784608b80f4e4c8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9211be13dbf84c6b98b0da0ecbffb784608b80f4e4c8b.png?mw=700" alt="image" /></a></a></p> <p><strong>関連記事</strong><br /> <a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/creating-a-simple-web-crawler-in-php/">PHPで簡単なWebクローラーを作ってみた</a><br /> <a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/web-scraping-using-python/">PythonによるWebスクレイピングを解説</a><br /> <a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/web-scraping-using-python-vs-web-scraping-tool/">Python vs Octoparse!初心者向きのスクレイピング方法はどっち?</a><br /> <a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/intro-to-web-scraping-with-excel-vba/">【初心者向け】ExcelとVBAでWebスクレイピング実戦!</a>!</p> Octoparse Japan tag:crieit.net,2005:PublicArticle/15864 2020-04-23T15:43:49+09:00 2020-04-23T15:43:49+09:00 https://crieit.net/posts/Octoparse-8-1-Beta スクレイピング業界の変革|Octoparse 新バージョン 8.1 Beta がリリース! <p><a href="https://crieit.now.sh/upload_images/83fd1e8a036ec55de62793094109faa55ea1386632f82.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/83fd1e8a036ec55de62793094109faa55ea1386632f82.png?mw=700" alt="image" /></a></p> <p>Webスクレイピングツールである<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/">Octoparse</a>の新バージョン ver 8.1 (ダウンロードは<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/Download">こちら</a>)が2020年4月15日よりリリースされました。今回の新バージョンのリリースでは、、Webページの自動認識機能の追加と内蔵ブラウザのアップグレードにより、パフォーマンスが向上し、データ取得の効率を大幅に改善しました。 また、ユーザインターフェースの改善により、インストールからタスク作成、実行中の操作まで、使いやすさも向上しました。</p> <p>今回の主なバージョンアップ項目は以下のようになります。</p> <h1 id="1.ハンズフリーでデータ抽出が可能"><a href="#1.%E3%83%8F%E3%83%B3%E3%82%BA%E3%83%95%E3%83%AA%E3%83%BC%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E6%8A%BD%E5%87%BA%E3%81%8C%E5%8F%AF%E8%83%BD">1.ハンズフリーでデータ抽出が可能</a></h1> <p>「Webページの自動認識」機能を追加するにより、WebページのURLアドレスを入力するだけで、Octoparseは自動的にWebページを識別し、ワークフローを自動的に生成するようになります。Webページ上のテキスト、画像、リンクなどの情報を識別でき、収集するデータフィールド、ページネーション、スクロールダウンなどの設定を自動的に推奨できます。複数の認識結果が表示され、簡単に切り替えられ、一般的なニーズを満たすことができると思われます。超初心者でも手軽にデータをスクレイピングできるようになりました!</p> <h1 id="2.高度なブラウザ互換性"><a href="#2.%E9%AB%98%E5%BA%A6%E3%81%AA%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E4%BA%92%E6%8F%9B%E6%80%A7">2.高度なブラウザ互換性</a></h1> <p>内蔵ブラウザをFirefoxからGoogle Chromeに切り替えました。以前のバージョンで読み込めなかったWebサイトは、Octoparse 8.1ですぐに読み込めるようになります。あらゆるWebサイトがOctoparseの内蔵ブラウザに開けられるように努めています。</p> <h1 id="3.より高速なスクレイピング速度"><a href="#3.%E3%82%88%E3%82%8A%E9%AB%98%E9%80%9F%E3%81%AA%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E9%80%9F%E5%BA%A6">3.より高速なスクレイピング速度</a></h1> <p>Webデータ収集のプロセスにおいて、更なる高速化が求められています。スクレイピング速度も、高品質のスクレイピングツールのコア競争力です。以前のバージョンと比べて、Octoparse 8.1は、10倍高速で応答性が向上しています。OP 7.0が100件データを抽出するのに21分41秒かかりましたが、OP 8.1が同じWebページから同じ量のデータを取得するのに2分しかかかりませんでした。</p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>新バージョンに関する詳細はこの記事をご覧ください。Octoparseへのご意見、アドバイスなどがございましたら、ぜひご遠慮なくお寄せください。Octoparseは引き続きより良いサービス・機能を提供できるよう努めております。</p> <p>元記事:<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/octoparse-81-release-features/">スクレイピング業界の変革|Octoparse 新バージョン 8.1 Beta がリリース!</a></p> Octoparse Japan