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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

python3 / beautifulsoup / google検索結果スクレイピングにおける検索ワードのCSV読み込み

sadie
sadie

総合スコア18

スクレイピング

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

0クリップ

2561閲覧

投稿2018/10/15 07:57

google検索結果をスクレイピングするにあたり
検索ワードの組み合わせを以下のコードにある組合せ以外に数10通り使い結果を収集したいです
複数の検索ワードを読み込ませる部分のコードの組み方についてご教示頂きたくうかがいます
現在作ったコードは以下です

python3

import requests as web import bs4 import csv list_keywd = ['金属屋根','修理','神奈川'] resp = web.get('https://www.google.co.jp/search?num=100&q=' + ' '.join(list_keywd)) resp.raise_for_status() soup = bs4.BeautifulSoup(resp.text, "html.parser") link_elem01 = soup.select('.r > a') link_elem02 = soup.select('.s > .st') if(len(link_elem02) <= len(link_elem01)): leng = len(link_elem02) else: leng = len(link_elem01) with open('vvv.csv','w',newline='',encoding='utf8') as outcsv: csvwriter = csv.writer(outcsv) csvwriter.writerow(['タイトル・説明','URL']) for i in range(leng): url_text = link_elem01[i].get('href').replace('/url?q=','') from urllib.parse import urlparse parsed_url = urlparse(url_text) base_url = '{0.scheme}://{0.netloc}/'.format(parsed_url) title_text = link_elem01[i].get_text() t01 = link_elem02[i].get_text() t02 = t01.replace('\n','') disc_text = t02.replace('\r','') csvwriter.writerow([title_text + disc_text, base_url]) outcsv.close()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

tiitoi

2018/10/15 08:16

具体的にどこらへんがわからないのでしょうか? keyword_sets = [ ['金属屋根','修理','神奈川'], ['キーワード1','修理','東京'], ['キーワード2','修理','名古屋'], ['キーワード3','修理','福岡'], ['キーワード4','修理','北海道']] のようにリストで定義しとくのでは駄目なのでしょうか?
sadie

2018/10/15 08:21

先程に引き続き、ありがとうございます。初心者につき、そのリストで定義する場合のコードの具体と、そのリストの具体も含め伺いました

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

スクレイピング

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。