Help us understand the problem. What is going on with this article?

PythonでGoogleしごと検索の検索結果を取得する〜スクリーンショットも添えて〜

今年に入ってから、社内/個人案件でSeleniumを使って色々とスクレイピングしまくって( # ´Д`)ハァハァしてたのですが、その流れでGoogleしごと検索をスクレイピングしてみることにしました。

今まではfacebook/php-webdriverでやっていたのですが、今回はPythonでやることに。

環境

macOS python pip
High Sierra 10.13.6 3.6.4 19.0.1

おソース

jobs.py

import sys
import time
import datetime
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.common.exceptions import NoSuchElementException

# コマンドライン引数を受け取る
words = sys.argv
# 第二引数をwordに格納
word = words[1]

print('"' + word + '"' + 'で検索...')
print('----------------------------------------------')

# setting user agent
ua = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0',
]
    now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')

# init Options
options = Options()
options.add_argument('-headless')
options.add_argument('-user-agent=' + ua[0])

geckodriver = 'geckodriver'

# set Options / chromedriver
driver = webdriver.Firefox(firefox_options=options)
# set window size
driver.set_window_size(450, 3320)
# set default wait
driver.implicitly_wait(6)

# go to URL
driver.get('https://www.google.com/search?ie=UTF-8&ibp=htl;jobs&htivrt=jobs&q=' + word)
# wait for rendering
time.sleep(5)

elements = driver.find_elements_by_css_selector('.tab-sel ul > li')
# print(elements)

if elements:
    for i, li in enumerate(elements):
        h1 = li.find_element_by_css_selector('.gsrt').text
        print(str(i+1) + '位 ' + h1)
        for item in li.find_elements_by_css_selector('.gsrt + div > div'):
            print('- ' + item.text.replace('\n', '、'))
        print('----------------------------------------------')
    driver.save_screenshot('sr_' + now +'.png')
else:
    print('要素がありませんでした...')

driver.quit()

検索方法

  1. python/pipの実行環境を構築(適当にググってください
  2. pip install selenium でseleniumをインストール
  3. OS/環境に合わせてgeckodriverをDL、解凍後、カレントディレクトリに配置
  4. カレントディレクトリで python jobs.py "キーワード" を実行

検索結果(例

❯ python jobs.py "渋谷 求人 エンジニア"
"渋谷 求人 エンジニア"で検索...
----------------------------------------------
1位 【渋谷】【時短相談可】サイバーセキュリティエンジニア
- パーソルテクノロジースタッフ株式会社
- 東京都渋谷区
- 提供元: リクナビ派遣
- 1 日前、1 時間 ¥4000
----------------------------------------------
2位 【渋谷!3100円~】ネットサービス会社でのNWエンジニア
- パーソル パナソニック HRパートナーズ株式会社 テクニカル事業本部
- 東京都渋谷区
- 提供元: リクナビ派遣
- 1 日前、1 時間 ¥3100~¥3300
----------------------------------------------
3位 【6月スタート】渋谷駅チカ♪交支給☆セールスエンジニア
- ヒューマンリソシア株式会社
- 東京都渋谷区
- 提供元: リクナビ派遣
- 6 時間前、1 時間 ¥3100
----------------------------------------------
〜〜 略 〜〜〜
----------------------------------------------
20位 システムエンジニア(SE),サーバーサイドエンジニア
- 社名非公開
- 東京都渋谷区
- 提供元: フューチャリズム
- 1 か月以上前、月 ¥70万~¥80万
----------------------------------------------

取れた!!

一応整合性取れてるかを確認したかったので、スクショも取るようにしてみました。

まとめ

Seleniumすごいよ( # ´Д`)ハァハァ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした