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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

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

Q&A

解決済

1回答

3266閲覧

Googleで上位サイト30件のtitleとurlをスクレイピングで取得したい

loveone

総合スコア12

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

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

0グッド

0クリップ

投稿2019/01/06 13:03

前提・実現したいこと

環境
windows10
Python3.7.2
beatifulsoup4

Googleで上位サイト30件のtitleとurlをスクレイピングで取得したい。

発生している問題・エラーメッセージ

上限が設定出来ておらず100件取ってきてしまっている。
上位30件だけ取得したい。

該当のソースコード

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() # 取得したHTMLをパースする 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) # CSVファイルを書き込み用にオープンして整形して書き出す with open('setagayaramen_output.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=','') # タイトルのテキスト部分のみ取得 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,url_text]) outcsv.close()

補足情報(FW/ツールのバージョンなど)

以上、何卒よろしくお願いいたします<m(__)m>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

100件と指定しているので、100件出ています。

30件とどこで指定してるつもりですか?

投稿2019/01/06 13:14

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

loveone

2019/01/06 13:20

あぁ…。100件と指定していた箇所を見過ごしていました。。 resp = web.get('https://www.google.co.jp/search?num=100&q=' + ' '.join(list_keywd)) この100部分を30に変更で解決しました。。ありがとうございます。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問