Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@yuking11

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

More than 1 year has passed since last update.

今年に入ってから、社内/個人案件で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すごいよ( # ´Д`)ハァハァ

0
Help us understand the problem. What is going on with this article?
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
yuking11
一応フロントエンドエンジニアです。 30中盤からぽちゃってきた。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?