LoginSignup
0
0

More than 1 year has passed since last update.

Webスクレイピングで情報収集をした際に、<!-- -->が表示されて情報収集できなかった時の対応方法 (スナガクのポートフォリオ作成日記)

Posted at

自己紹介

こんにちは!
記事をご覧いただきありがとうございます。
スナガクと申します。

転職などのためにポートフォリオを制作しています。
言語はPythonで、基本的な文法は、本などで学習した者です。
分からないことだらけで、悪戦苦闘中ですが、頑張ります!
同じ初心者の方の助けになれば、幸いです!

今回のゴール

Webスクレイピングを用いて情報収集を行った際、欲しい要素の情報が「<!-- -->」と表示され、上手く情報収集が出来ない。

生じていた問題

下記ブログ記事を参考にさせて頂きました。
https://tkstock.site/2022/08/20/python-selenium-pagesource-beautifulsoup/

結論から言うと、requests.getだと、非同期情報の習得が出来てないから、になります。

少し非同期情報と非同期処理の説明をします。
まず、Webスクレイピングの考え方についてです。
パソコンからWebサーバーに、「HTMLの情報を取得したい」とリクエストを投げます(コードでは、requests.getに相当する)。そして、その情報を受け取る、という流れです。
その際、取得にかかる時間は、情報ごとに異なります。
(文字だけか、画像も表示するかで、処理する速度が変わるのと同じ)
ここで、Webサイトの多くは、「とりあえず読み込めた情報から表示していけ」という指示を出します。これが、【非同期処理(順番に情報を読み込まず、手当たり次第に表示させる)】になります。(なぜ非同期処理を行うかは、記事の最後に記載しています)

そうです、requests.getだと、この「すぐに読み込めた情報」しか習得できない、という事になります。だから、<!-- -->と表示されて、上手く取得できないのです!
(と、予想しています)

具体的な行動

結論:Seleniumを使ったスクレイピングに切り替える or Seleniumのブラウザが表示しているサイトのHTMLを取得して、それをBeautifulSoupで解析する(requests.get()の代わり)

コード(後者の場合)

import time

from selenium import webdriver 

~~~
(ライブラリの読み込みとか基本設定は環境で代わるので省略)
~~~

# SELENIUMでサイトにアクセス
driver.get("http://~~~")

# 非同期処理の情報が表示されるまで待機
time.sleep(5)

# Seleniumのブラウザが表示しているサイトのHTMLを取得
html = driver.page_source


# 取得したHTMLをBeautifulSoupで解析できろようにする
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)

*上記ブログから引用させて頂きました

おわりに

「<!-- -->」の対処するために記事が無かったため、投稿させて頂きました。
また、SeleniumとBeautifulSoupの組み合わせも知っておいて損はない、のかもしれません。

余談
非同期処理を行う理由
順番に情報を読み込む場合だと、一つ時間がかかる処理があれば、その段階で処理が止まったように見える。すると、Webサイトを訪れた人は、画面がフリーズした!と思って、サイトから離れてしまう、だから非同期処理を行っています。

#作成する予定のポートフォリオ詳細
制作するポートフォリオの内容は、
Djangoを使ったWebアプリケーションです!
Webアプリケーションの中身は、
It技術の最新情報・トレンドを確認できる、そんなサイトです。
時間がない、ご多忙なエンジニアの方でも、
意欲があれば、このサイトを見て勉強できる。
また、トレンドの情報を自ら投稿し、周りとも共有できる。
そんなサイトを作れば、周りの方に貢献できるかな?
と思っています!

具体的な方法は、
Webスクレイピング等を用いて、
最新技術や、気になるトピックを一目見て確認できる。
そんなサイトです!
また、機能は順次追加していければ、と思っています!

更新頻度は、1週間に1~2回になると思います!
(2022/11/12 現在)

見守って頂けると幸いです!
ご指導、ご鞭撻のほど、よろしくお願いいたします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0