ほりまくれ!初心者でもスクレイピングはできる。【python,bs4】

googleの検索結果をひたすら表示するスクレイピングコード

googleで検索したいキーワードがあるときに、キーワードを自分で決めて、それをプログラムで開くようにするとはやくWEBページを開けるというものです。(今回のプログラムはテキスト形式での表示のみ)

利用するPythonのモジュール

  • requestsモジュール
  • bs4モジュール

googleで検索してみるとわかるのですが、あるキーワードがあったときにURLは決まった形になっていて、それをプログラムで指定してやると、数ページ分のリンクをいっきにひらくことができたりします。

googleの検索結果を一気に表示するプログラムコード

import requests, bs4
def searchreturn(search_word):
 google_page = []
 for i in range(0,50,10):
 page = '&start={}'.format(str(i))
 google_page.append(page)
 
 count = 1
 page_num = 1
 for page in google_page:
 res = requests.get('https://www.google.co.jp/search?q=' + search_word + page)
 res.raise_for_status()
 soup = bs4.BeautifulSoup(res.text)
 elems = soup.select('.r')
 elems_a = soup.select('.r < a')
 print(str(count) + 'ページ目を表示します')
 print('\n')
 count += 1
 for i in range(len(elems)):
 print(str(page_num) + '---' + elems[i].text) 
 print('https://www.google.co.jp' + elems_a[i].get('href'))
 print('\n')
 page_num += 1
 
searchreturn('dos攻撃')

結果的にはこんな感じになります。

別に普通に検索すればいいんじゃね?とすればそれまでですが。

まとめ: これはスクレイピング?

スクレイピングは特定のデータを掘り起こして→データ分析につなげるのが主流みたいです。しかも仮にこんな感じでひっぱってきても、結果的はあまり効率はよくなっていない気はします。あと問題点としてrequests+bs4は早いとは思いますが、多分遅いです(どっち?)for文使いまくったら遅くなるらしいです。