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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2105閲覧

Python検索結果のスクレイピングに関して

keirr

総合スコア12

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/08 11:39

前提・実現したいこと

web検索した時出た10位までのページ内情報を抽出したいです。

Pythonで検索キーワードに対する検索結果から各ページ内の情報をスクレイピングするプログラムを書いています。
キーワードに対しての検索結果(タイトル,URL)は出力できるんですが、各ページ(10位まで)のh2タグを出力させることができません。

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

エラーメッセージ

該当のソースコード

Python

1import requests 2from bs4 import BeautifulSoup 3 4#定義 5keywd = ' ' 6response = requests.get('https://www.google.co.jp/search?gl=jp&q=' +keywd) 7soup = BeautifulSoup(response.text,'html.parser') 8 9#検索結果タイトル 10tags = soup.select('.r') 11for tag in tags: 12 print(tag.get_text()) 13 14#検索結果URL 15page_url = soup.find_all('cite') 16for page in page_url: 17 print(page)

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

tiitoi

2018/11/08 12:13

ほしいのはサイトの説明文ということでしょうか?
keirr

2018/11/08 12:18

サイトのh2タグのタイトルです。
tiitoi

2018/11/08 12:21

Google の検索結果の HTML ページではなく、各サイトにアクセスするということですか?
keirr

2018/11/08 12:52

検索結果のHTMLを取得した後に各ページにアクセスしたい感じです!
guest

回答1

0

ベストアンサー

link が取れてるなら、それを for で回して、Google のサイトをスクレイピングしたのと同じやり方で各サイトにアクセスしていけばよいと思います。

python

1import requests 2from bs4 import BeautifulSoup 3 4# 検索する。 5keywd = 'Python' 6res = requests.get('https://www.google.co.jp/search?gl=jp&q={}'.format(keywd)) 7soup = BeautifulSoup(res.text, 'html.parser') 8 9# 検索 10titles = [] 11for tag in soup.select('.r'): 12 titles.append(tag.text) 13 14#検索結果URL 15links = [] 16for tag in soup.find_all('cite'): 17 links.append(tag.text) 18 19h2_list = [] 20for link in links: 21 res = requests.get(link) 22 soup = BeautifulSoup(res.text, 'html.parser') 23 24 h2_titles = [tag.text for tag in soup.find_all('h2')] 25 h2_list.append(h2_titles)

python

1for title, link, h2s in zip(titles, links, h2_list): 2 print('title:', title) 3 print('link:', link) 4 for h2 in h2s: 5 print('h2:', h2) 6 print('-------------------------------------')
------------------------------------- title: Python - Wikipedia link: https://ja.wikipedia.org/wiki/Python h2: 目次 h2: 概要[編集] h2: 歴史[編集] h2: 言語の機能[編集] h2: 利用[編集] h2: フレームワーク[編集] h2: 脚注[編集] h2: 関連項目[編集] h2: 外部リンク[編集] h2: 案内メニュー ------------------------------------- title: 専門知識いらず!Pythonとは?言語の特徴から網羅的に徹底解説 | 侍 ... link: https://www.sejuku.net/blog/7720 h2: Pythonとは? h2: Pythonの特徴とメリット h2: Pythonで作れるもの h2: Pythonの基礎の基礎 h2: Pythonの仕事市場 h2: Pythonで仕事獲得をするには h2: まとめ h2: WEBアプリ開発入門者がゼロからモノを作れるようになるまでの5ステップ h2: 【入門者必見】Swiftを学ぶメリットやできることを徹底解説! h2: 【Python入門】Djangoとは?webアプリ開発の第一歩 h2: 狙い目はココ!Pythonの機械学習を効率的に学べる本を厳選7冊 h2: 【Python入門】randomモジュールの使い方まとめ h2: 【全7冊】Python3の入門書はこれで決まり!レベル別に紹介! ------------------------------------- title: Python | プログラミングの入門なら基礎から学べるProgate[プロゲート] link: https://prog-8.com/languages/python ------------------------------------- title: 今さら聞けない!Pythonとは【初心者向け】 | TechAcademyマガジン link: https://techacademy.jp/magazine/15507 h2: 目次 h2: Pythonとは h2: Pythonで作れるもの h2: Pythonを使うメリット・デメリット h2: 基本構文 h2: まとめ ...以下略

投稿2018/11/08 13:45

tiitoi

総合スコア21956

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

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

keirr

2018/11/08 13:57

ありがとうございます。 悩んでいた部分がスッキリ解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問