検索上位サイトのURL取得

機能説明

指定したキーワードでGoogle検索した際に上位表示されているサイトのURLを取得するツールです。

コード全体

下記コードをColaboratoryに貼り付け、実際の動作を確認してください。

◆コード

from bs4 import BeautifulSoup
import requests
import urllib.parse
from time import sleep  

keyword = 'パソコン'
keyword = urllib.parse.quote(keyword)

url = 'https://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&num=15&q='

url = url + keyword

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"}
data = None
request = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(request)
html = response.read()
sleep(1)

soup1 = BeautifulSoup(html,'html.parser')

sites = soup1.select('.yuRUbf > a')

for  site in  sites:
    site_url = site.get('href')
    print(site_url)

◆出力結果

 https://kakaku.com/pc/
 https://www.pc-koubou.jp/
 https://www.amazon.co.jp/%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3/b?ie=UTF8&node=2188762051
 https://www.biccamera.com/bc/i/topics/notebook/index.jsp
 https://search.rakuten.co.jp/search/mall/%E3%83%8E%E3%83%BC%E3%83%88%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3/
 https://www.nojima.co.jp/support/koneta/48370/
 https://www.mouse-jp.co.jp/
 https://jp.ext.hp.com/notebooks/personal/
 https://www.yodobashi.com/category/19531/
 https://www.dospara.co.jp/
 https://www.nec-lavie.jp/
 https://pc.watch.impress.co.jp/
 https://used.sofmap.com/r/category/pc

機能の説明

1.

from bs4 import BeautifulSoup
import requests
import urllib.parse
from time import sleep  

ライブラリをインポートしています。

それぞれ、以下のような機能を持っています。

sleep:処理を一旦停止します
requests:Http通信を行います
urllib.parse:URLエンコードやデコードを行います
BeautifulSoup:HTML からデータを抽出します。

2.

keyword = 'パソコン'
keyword = urllib.parse.quote(keyword)

キーワードを指定し、日本語のキーワードをURLエンコードします。
こうすることで、日本語を含むURLを処理することができるようになります。

3.

url = 'https://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&num=15&q='

Googleで検索するためのURLを用意します。
「q=」の後ろにキーワードを指定すると、そのキーワードでGoogle検索することを意味します。

4.

url = url + keyword

検索用のURLとキーワードを結合して、再びURLに代入します。

5.

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"}
data = None
request = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(request)
html = response.read()

requestのライブラリを使用して、Google検索の検索結果を取得します。
なお、ここは深く理解する必要はありません。
「url」を指定すると、そのページの結果(HTMLコード)が「html」に代入されるということだけ理解していれば大丈夫です。

6.

sleep(1)

結果を確実に取得できるよう1秒ほど待ちます。

7.

soup1 = BeautifulSoup(html,'html.parser')

取得したHTMLコードからBeautifulSoupで扱えるようBeautifulSoup用のオブジェクトを生成します。

8.

sites = soup1.select('.yuRUbf > a')

BeautifulSoupのselectメソッドを使用すると、クラス名や属性などを指定することによって、それに該当する部分をリスト形式で取得することができます。

上記の場合、クラス名が「yuRUbf」の「a」タグの内容をリスト形式で取得することができます。

なお、このクラス名はChromeブラウザで調べることができるのですが、ここでは「yuRUbf」を指定すれば良いと理解しておいてください。
(このクラス名はGoogleの仕様変更により変わる場合があります。)

ちなみに、Chromeブラウザで調べると以下のようになっていることがわかります。

9.

for  site in  sites:

BeautifulSoupのselectメソッドで取得したリストの要素数分、繰り返し処理を行います。

10.

site_url = site.get('href')

BeautifulSoupのselectメソッドでhref属性の値(URL)を取得します。

11.

print(site_url)

URLを表示します。

タイトルとURLをコピーしました