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

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

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

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

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

2690閲覧

検索結果をスクレイピングしてタイトルを取得したい(GoogleSpreadsheets)

bobobo

総合スコア13

スクレイピング

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

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2018/11/06 02:40

編集2018/11/06 05:09

概要

indeedの検索結果から「職種名」をスプレッドシートにスクレイピングしたいと思っています。

下記のイメージの赤色で囲った部分のテキストを取得したいです。
イメージ説明

indeed検索結果

発生している問題・エラーメッセージ

tbodyタグを抜き、スクレイピング自体は途中まで出来ているみたいなのですが、
「職種名」だけをうまく抜き出すことが出来ません。

いくつかサイトを参考にさせていただいたのですが、うまく行かず困っています。

該当のソースコード

=IMPORTXML("https://jp.indeed.com/jobs?q=%E3%82%A2%E3%83%AB%E3%83%90%E3%82%A4%E3%83%88&l=%E6%9D%B1%E4%BA%AC","/html/body/table/tr/td/table/tr/td[2]")

試したこと

td[2]以降でdivなどを指定したのですが、うまく行かず…
どなたかお助けいただければ幸いです。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

pythonでいいなら

sh

1pip install requests-html 2pip install retry

python

1from requests.exceptions import ConnectionError, TooManyRedirects, HTTPError 2from requests_html import HTMLSession 3from retry import retry 4 5 6# 試行回数:3 間隔:2 指数:2 7# リトライの間隔が2、4、6と増えていく 8@retry(tries=3, delay=2, backoff=2) 9def get_resp(url): 10 try: 11 session = HTMLSession() 12 return session.get(url) 13 except ConnectionError: 14 print('Network Error') 15 raise 16 except TooManyRedirects: 17 print('TooManyRedirects') 18 raise 19 except HTTPError: 20 print('BadResponse') 21 raise 22 23 24try: 25 r = get_resp( 26 'https://jp.indeed.com/jobs?q=%E3%82%A2%E3%83%AB%E3%83%90%E3%82%A4%E3%83%88&l=%E6%9D%B1%E4%BA%AC' 27 ) 28except: 29 print('Response not found') 30else: 31 for i in r.html.find('a[data-tn-element="jobTitle"]'): 32 print(i.attrs['title'])

【インターン/アルバイト】【週3/5H~】PC設定作業/キッティング作業(社内作業のみ 客先なし)
ゲームスクリプター(アルバイト/未経験歓迎)
デバッガー(アルバイト)
【大手流通系企業】クライアントサポートスタッフ(アルバイト・パート)
人気YouTuber「轟ちゃん」企画のアシスタント
人気YouTuber「スカイピース」企画のアシスタント
【プロゲーマー】新宿のコンセプトカフェでゲームするお仕事です【youtuber】
レンタカー回送ドライバー【土曜又は日曜、更に車中泊出来る方尚可】
採点スタッフ、試験監督
PC メンテナンススタッフ パソコンのスキルを身につけたい方に最適なアルバイト
アートギャラリー アルバイト/インターン スタッフ
国立新美術館・展覧会案内スタッフ
激レア 20日間限定 “重要文化財公開イベント”の誘導 案内
1日OK アリオ葛西で(1)アンケート(2)通行量調査
ゲームプランナー(アルバイト/未経験歓迎)
【時給1,200円】 コストコ(costco) アルバイトスタッフ(年末年始の短期募集!)

投稿2018/11/06 12:15

barobaro

総合スコア1286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

例えば"職種名"を指定して取得するのは如何でしょうか。xpathは//span[text()='職種名']/../..//aを使用します。

=IMPORTXML("https://jp.indeed.com/jobs?q=%E3%82%A2%E3%83%AB%E3%83%90%E3%82%A4%E3%83%88&l=%E6%9D%B1%E4%BA%AC","//span[text()='職種名']/../..//a")

取得した値が目的のものでない場合はお知らせください。

投稿2018/11/06 03:21

kisojin

総合スコア899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobobo

2018/11/06 03:30

ご回答いただきありがとうございます。 特定の職種名を抜き出したい訳ではなく、検索結果に出た職種名を全て取得したいと思っています。 そちらは可能でしょうか?
kisojin

2018/11/06 03:39

ご希望の結果ではないとのこと。申し訳ありません。「検索結果に出た職種名を全て」の意味がよく分かりませんでした。質問にあるURLのどの値なのかをお教えいただけないでしょうか。理解力が低く誠に申し訳ありません。
bobobo

2018/11/06 04:18

こちらこそ分かりづらく申し訳ありません。 職種名は検索結果のうちの各求人案件の社名のすぐ上にある部分です。 id="sja1"やid="sja2"という部分です。
kisojin

2018/11/06 04:37 編集

"各求人案件の社名のすぐ上にある部分"の意味が分かりません。また、残念ながらダウンロードできるHTMLには id="sja1"やid="sja2" は含まれていません。
kisojin

2018/11/06 04:41

例えば、必要と考えている値のサンプルやページの図を使った説明があると分かりやすいかと思われます。もしもお時間が無いようですと、このコメントは無視してください。
bobobo

2018/11/06 05:10

質問に説明用の画像を追加いたしました。ご確認いただけると幸いです。
kisojin

2018/11/06 05:57 編集

追加情報有難うございます。貴重なお時間を頂戴したことに謝罪致します。取得したい値について理解することができました。残念ながらご希望の値は動的に作られているため、IMPORTXMLを使って直接取得することはできません。実際、質問にあるURLからHTMlデータを取得してみますと希望されている値は含まれません。ご希望にお答えすることができず申し訳ありません。
bobobo

2018/11/06 06:02

ご回答いただきありがとうございます。 IMPORTXML以外の方法でこちらのデータを取得することは可能でしょうか? スプレッドシートに限らず取得できる方法があればご教示いただければ幸いです。
kisojin

2018/11/06 07:11

javascriptで値を出力しているようですが詳細を解析するまでには至っておりません。データ自体が直接サーバから取得しているような場合は、javascriptを実行可能なスクリプトでデータを取得するか、あるいはAPIが用意されているようですと、そちらを直接利用する方が宜しいかと思われます。APIについては値を取得したいサイトの管理者へ問い合わせてみるのも一つの手かと思われます。具体的な回答でなく本当に申し訳ありません。
bobobo

2018/11/07 01:31

ご回答いただきありがとうございます。そちらで進めさせていただきます。
kisojin

2018/11/11 22:07

返事が遅くなり申し訳ありません。pythonでは普通に読むことができるようですね。カスタム関数として使用することができればと、Google Apps Scriptで試してみましたが、データを直接取得することはできませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問