Icon_competition
スクレイピング / python3 / google検索結果収集に関するコードの加筆修正
Job概要
現在の以下のコードでスクレイピングをしています
たくさんのワードを入れ替えて検索結果の収集をしたく
現在はすべて手作業で一つずつコピペでワードの入れ替えをしているため、その工数を効率化するコードを頂きたいという依頼です
以下コード「keyword_sets =」の内容をいろいろなワードに入れ替えたいです
自分でしらべて試行錯誤した結果、検索したいワードを書いたCSVを読み込ませる方法が良いかと考えましたが、動くコードがかけずご教示頂ければ・・


[python3]
from time import sleep
import csv
import requests as web
from urllib.parse import urlparse
from bs4 import BeautifulSoup

keyword_sets = [['リフォーム','ガラス','山口'],
['リフォーム','ガラス','愛媛'],
['リフォーム','ガラス','長崎'],
['リフォーム','ガラス','奈良'],
['リフォーム','ガラス','鹿児島'],
['リフォーム','ガラス','青森'],
['リフォーム','ガラス','岩手'],
['リフォーム','ガラス','大分'],
['リフォーム','ガラス','石川'],
['リフォーム','ガラス','山形'],

def google(keywords):
url = 'https://www.google.co.jp/search?num=100&q='; + ' '.join(keywords)
print('googling... ', url)

# URL から HTML を取得する。
resp = web.get(url)
# HTML から BeautifulSoup オブジェクトを作成する。
soup = BeautifulSoup(resp.text, "html.parser")

results = []
# URL、タイトル、説明を取得する。
# <div class="g"> のタグ一覧を取得する。
for div_elems in soup.select('div.g'):
# class="r" のタグ配下の a タグを取得する。
a_elem = div_elems.select('.r > a')
# class="s" のタグ配下の class="st" のタグを取得する。
div_elem = div_elems.select('.s > .st')
# 両方存在しない場合があったので、その場合はスキップする。
if not a_elem or not div_elem:
continue
# select() は選択された要素が1つでもリストで返すので、1個目の要素を取り出す。
a_elem, div_elem = a_elem[0], div_elem[0]

# a_elem タグの href 属性を取得し、'/url?q=' を削除する。
url = a_elem.get('href').replace('/url?q=', '')
# ドメイン部分までを取得する。
url_prefix = '{0.scheme}://{0.netloc}/'.format(urlparse(url))
# a タグのテキストを取得する。
title = a_elem.text
# 説明文を取得する。改行コードは削除する。
description = div_elem.text.replace('\n','').replace('\r','')
# ドメイン部分までの URL、タイトル、説明をリストに追加する。
results.append([url_prefix, title, description])

return results

results = []
# キーワード分検索を実行する。
for keywords in keyword_sets:
results.extend(google(keywords))
print(results)

# CSV に書き込む。
with open('リフォーム_屋根葺き(山口-鳥取)_list_190212.csv', 'w', encoding='utf8') as f:
writer = csv.writer(f)
writer.writerow(['タイトル・説明','URL']) # ヘッダーを書き込む。
writer.writerows(results) # データを書き込む。


詳細情報
JobID クライアント名
37951 nori_pub
募集期間 住所による制限
2019/02/12 15:10 〜 2019/02/16 00:00 なし
信用情報による制限 指定スキル
  • なし
ソフトウェア設計

提案一覧
  • Icon_state_ready
  • Icon_valid_identity
  • Icon_nda
  • Icon_valid_env
Aws4_request&x-amz-signedheaders=host&x-amz-signature=e2e3e50e55ff91881125fcf48da83b5635ed0a749f322a970e81551d52c4809c
その他エンジニア
提案内容
非公開
実績数
Ex:140
M :0
Co:1
提案日時
2019/02/13 09:50
報酬(税込) 
5,000 円
残り時間
Icon_state_entry_finish
Page_top