今年に入ってから、社内/個人案件で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()
検索方法
- python/pipの実行環境を構築(適当にググってください
-
pip install selenium
でseleniumをインストール - OS/環境に合わせてgeckodriverをDL、解凍後、カレントディレクトリに配置
- カレントディレクトリで
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すごいよ( # ´Д`)ハァハァ