ブログの検索順位を調べる
ブログの検索順位を調べます。google検索の結果をスクレイピングしその中にこのブログ(Pythonでいろいろやってみる)が含まれているかを調べます。requestsで検索の実行および結果の取得を行い、beautifulsoup4で取得した結果(html)から必要な情報を取得し、urlにこのブログのドメイン(https://tat-pytone.hatenablog.com)が含まれているかどうかを調べます。
コードは【Webスクレイピング入門】Google検索の上位サイトを件数指定して表示する方法に掲載されているものを全面的に使わせていただきました。詳細な説明もあり大変参考になります。
関連記事
食べログ全国ランキングTOP20の星をジャンル別に比較する
Yahooニュース・アクセスランキングの見出しを取得し頻出単語を調べる
環境
- windows10 home
- Anaconda 3/ jupyter notebook 5.6.0
- Python 3.8.8
- requests 2.26.0
- beautifulsoup4 4.10.0
コード
【Webスクレイピング入門】Google検索の上位サイトを件数指定して表示する方法のコードに、検索結果のURLにブログのドメインが含まれている場合に★をつけるよう追加しました。
検索ワードとして'python 画像 アスキーアート'を使い、検索順位10位までを取得します。
import requests from bs4 import BeautifulSoup # Google検索するキーワードを設定 search_word = 'python 画像 アスキーアート' # ブログのドメイン domain = 'https://tat-pytone.hatenablog.com' # 上位から何件までのサイトを抽出するか指定する pages_num = 10 + 1 print(f'【検索ワード】{search_word}') # Googleから検索結果ページを取得する url = f'https://www.google.co.jp/search?hl=ja&num={pages_num}&q={search_word}' request = requests.get(url) # Googleのページ解析を行う soup = BeautifulSoup(request.text, "html.parser") search_site_list = soup.select('div.kCrYT > a') # ページ解析と結果の出力 for rank, site in zip(range(1, pages_num), search_site_list): try: site_title = site.select('h3.zBAuLc')[0].text except IndexError: site_title = site.select('img')[0]['alt'] site_url = site['href'].replace('/url?q=', '') # URLにブログのドメインが含まれていれば★をつける if domain in site_url: mark = '★' else: mark = '' # 結果を出力する print(mark + str(rank) + "位: " + site_title + ": " + site_url)
実行結果
4位にランクインしていることがわかります。
【検索ワード】python 画像 アスキーアート 1位: PythonとOpenCVで画像をアスキーアート化するプログラムを作った: https://qiita.com/Pavaux/items/450ac6823e86b092cfbb&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQFnoECAgQAg&usg=AOvVaw3g2l03bqQ4MJrIuiR7myZy 2位: Pythonで画像からアスキーアートを生成してみる - Qiita: https://qiita.com/yukid/items/a96a036564e1c93c3ae9&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQFnoECAcQAg&usg=AOvVaw3OjjduCvNyamrVdsbhHlkt 3位: PythonとOpenCVで画像をアスキーアート化してみる(トレースAA ...: https://nehori.com/nikki/2021/04/04/post-27881/&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQFnoECAoQAg&usg=AOvVaw34kw_TvSIdD2Pods6f7TKk ★4位: アスキーアートを自動生成する - Pythonでいろいろやってみる: https://tat-pytone.hatenablog.com/entry/2020/02/26/202205&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQFnoECAkQAg&usg=AOvVaw2NYFbKmDFrzHYfRwFFxSB8 5位: Pythonを使って画像をアスキーアートに変換するスクリプト: https://blog.tkrel.com/347&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQFnoECAsQAg&usg=AOvVaw2qoj9YtdKTyTrzxTviyjg6 6位: Pythonで鬼滅の刃の炭治郎を描きます。OpenCVで画像から ...: https://www.youtube.com/watch%3Fv%3DfSA_sT9LAqw&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQtwJ6BAgBEAE&usg=AOvVaw1HgRkvIAo_GdqHsSONjwkx 7位: 「python 画像 アスキーアート」の動画: https://www.youtube.com/watch%3Fv%3DfSA_sT9LAqw&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQuAJ6BAgBEAI&usg=AOvVaw3sOfP-SVV1xUFaai9Piqnj 8位: Python アスキーアートを作った - 渡邊直樹のブログ: https://naokiwatanabe.blogspot.com/2014/10/python.html&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQFnoECAMQAg&usg=AOvVaw14aEo95q0Z4MxCyjwrUBiD 9位: アスキーアートを自動生成する - Pythonでいろいろやってみる: https://itnews.org/news_resources/137856&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQFnoECAAQAg&usg=AOvVaw1io297U4DvgysvJsFODSYd 10位: 画像からAA(アスキーアート)を作る機能を作ってみたけど: https://tetorachaos.com/image-to-aa1&sa=U&ved=2ahUKEwiTmIiwsYb1AhXDLH0KHaACCbkQFnoECAUQAg&usg=AOvVaw3PPnlJj8CIbg3BH_bQYrYO
検索ワードを'python 画像 鮮やか'に変えて試します。
コード
import requests from bs4 import BeautifulSoup # Google検索するキーワードを設定 search_word = 'python 画像 鮮やか' # ブログのドメイン domain = 'https://tat-pytone.hatenablog.com' # 上位から何件までのサイトを抽出するか指定する pages_num = 10 + 1 print(f'【検索ワード】{search_word}') # Googleから検索結果ページを取得する url = f'https://www.google.co.jp/search?hl=ja&num={pages_num}&q={search_word}' request = requests.get(url) # Googleのページ解析を行う soup = BeautifulSoup(request.text, "html.parser") search_site_list = soup.select('div.kCrYT > a') # ページ解析と結果の出力 for rank, site in zip(range(1, pages_num), search_site_list): try: site_title = site.select('h3.zBAuLc')[0].text except IndexError: site_title = site.select('img')[0]['alt'] site_url = site['href'].replace('/url?q=', '') # URLにブログのドメインが含まれていれば★をつける if domain in site_url: mark = '★' else: mark = '' # 結果を出力する print(mark + str(rank) + "位: " + site_title + ": " + site_url)
実行結果
1位にランクされています。
【検索ワード】python 画像 鮮やか ★1位: 画像の彩度、明度を変える - Pythonでいろいろやってみる: https://tat-pytone.hatenablog.com/entry/2019/04/14/193237&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAEQAg&usg=AOvVaw3oawQbLrbB4l442KB_z6AY 2位: 【Pillow】画像の鮮やかさ・コントラスト・明るさ・シャープネス調整: https://python-no-memo.blogspot.com/2020/04/pillow.html&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAoQAg&usg=AOvVaw1hSHkEyW6Y_y5IoSmAxYiE 3位: 続・rawpyでPython現像 (彩度・シャープネス調整) | キャンプ工学: https://campkougaku.com/2020/01/16/rawpy-sat/&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAsQAg&usg=AOvVaw1m6xsPngW30XJ727mzcRwV 4位: 【Python/OpenCV】赤・緑・青色の検出(HSV色空間) | 西住工房: https://algorithm.joho.info/programming/python/opencv-color-detection/&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAkQAg&usg=AOvVaw1P4Dq9FymrbJWfmKsZAnxp 5位: [PDF] 画像処理1︓画像の記録形式: http://www.mi.u-tokyo.ac.jp/consortium2/pdf/ImageProcessing1%2520-%2520Python%2520Sample.pdf&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAcQAg&usg=AOvVaw2M698bd-aF2QkkrA-UUjm7 6位: OpenCVでRGBとHSVのヒストグラムを取得する方法 - Qiita: https://qiita.com/tatsuya11bbs/items/ff4a07d73e14385b6922&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAgQAg&usg=AOvVaw0eKBjGHSq8qkKzVK7GjApg 7位: 【Python+OpenCV】特定の色を検出するプログラム | CRAFT GoGo: https://craft-gogo.com/python-opencv-color-detection/&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAAQAg&usg=AOvVaw1onPKKDHectoOqPMltO1RC 8位: 画像処理入門講座 : OpenCVとPythonで始める画像処理 | POSTD: https://postd.cc/image-processing-101/&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAUQAg&usg=AOvVaw1_tiYfm6yhISDDZQ_Pv8HE 9位: OpenCV 入門 (10) - 色の抽出|npaka|note: https://note.com/npaka/n/nc6764b99dbe0&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAIQAg&usg=AOvVaw2akInXVM8s11pqjNnpFGUt 10位: OpenCV 画像の色相、彩度、明度の変更【HSV】 | sciencompass: https://sciencompass.com/machine-learning/opencv_rgb_hsv_change&sa=U&ved=2ahUKEwjqgL6FsYb1AhUzO30KHTcVAWAQFnoECAQQAg&usg=AOvVaw3yKsvJ2DFfez4h2VsKjurf
以下のサイトを参考にさせていただきました
【Webスクレイピング入門】Google検索の上位サイトを件数指定して表示する方法