質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

受付中

Udemyの検索結果のスクレイピング

kudama
kudama

総合スコア0

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

1回答

-2評価

0クリップ

120閲覧

投稿2022/05/13 02:55

やりたいこと

Udemyの検索画面から、各ページのリンクや講座名、レートなどをスクレイピングするコードを作成したい。

問題

  • urlがうまく生成できていない

検索ページのurlの形式は分かっているが作成したコードでは文字コードエラーが出てしまいencodeしても動作しなかった。

  • そもそもどこをスクレイピングすれば良いかわからない

検索→一覧ページの取得は分かった。しかし、デベロッパーツールを確認したところターゲットが見つからず。恐らく、ページ遷移先でスクレイピングすると考えられるが、その場合の手段が調べても分からなかった。

以上二点です。
現状作成したurlを確認するところまででですが、下記コード参照していただければと思います。

python

from csv import excel from tkinter.tix import DirSelectBox import urllib.request from bs4 import BeautifulSoup import lxml import selenium # 検索語群※ここではビジネス系の語群にしてみる key = ['人事'.encode('utf-8'),'HR','経理'.encode('utf-8'),'accounting','human+resources','営業'.encode('utf-8'),'EC',\ 'marketing','マーケティング'.encode('utf-8'),'E+Commerce'] # 別の語群※ key2 = ['人事'.encode('utf-8'),'HR','経理'.encode('utf-8'),'accounting','human+resources','営業'.encode('utf-8'),'EC',\ 'marketing','マーケティング'.encode('utf-8'),'E+Commerce'] #検索ページのうrl(+検索値) url = 'https://www.udemy.com/courses/search/?src=ukw&q=' """ ユーザーエージェント (User agent) 確認くんでチェックする!! https://www.ugtop.com/spill.shtml サイトによって、弾かれるから、ブラウザを偽装する必要があるらしい。 """ #そのままコピペした ua = #そのままコピペした req = urllib.request.Request(url, headers={'User-Agent': ua}) html = urllib.request.urlopen(req) """ Python標準ライブラリのhtml.parser以外に、lxmlやhtml5libを指定することもできる。 その場合は、それぞれをpipなどでインストールしておく必要がある。 "html.parser"を使わないと警告出されるらしい $ pip install lxml $ pip install html5lib Beautiful Soupのドキュメントによるとlxmlが速いのでオススメとのこと。 """ soup = BeautifulSoup(html, "lxml") """ 恐らくここにページのリンクがある?? <div class="popper--popper-content--2tG0H course-objectives-quick-view-box--popover-wrapper--3rGCp" id="u206-popper-content--341" aria-labelledby="u206-popper-trigger--340"> <div class="popper--animation-wrapper--1uUMV"><div class="popover--popover--bps8g popover--popover--top--arrow--1CAPy"> <div class="popover--inner--1ZzRT"></div> <div class="popover--arrow--1i7d4 popover--arrow--top--17Jzn" style="top: 100%; left: 0rem;"></div></div></div></div> """ for k in range(len(key)): Url = url+key[k] for d in range(len(DSkey)): Url = Url+key2[d] print(Url) """ 参考にしたコードの残差 topicsindex = soup.find('div', attrs={'class': 'topicsindex'}) topics = topicsindex.find_all('li') for topic in topics: print(topic.find('a').contents[0]) """

参考ページ

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。