読者です 読者をやめる 読者になる 読者になる

30代無職のプログラミング入門

暇つぶしにプログラミングを独学してみる

Googleで1〜1000の数字を検索し、そのヒット数をグラフ化する

def google_results(num):
    
    import requests, bs4
    
    url = 'https://www.google.co.jp/search?q='
    results = []
    
    while num > 0:
        res = requests.get(url + str(num))
        soup = bs4.BeautifulSoup(res.text, 'lxml')
        
        # ソースの中の、id="resultStats"の部分がヒット件数なのでそこを抜き出す
        text = soup.find(id="resultStats").getText()
        
        # 数字部分だけ抜き出して、コンマを除去
        results.append(int(text[2:-2].replace(',','')))
        
        num -= 1
        
    # 昇順に
    results.reverse()
    
    return results
results = google_results(1000)

グラフ化する。

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

plt.plot(results,".",markersize=5)

f:id:unEmployed:20170206212333p:plain

対数軸にすると

plt.plot(results,".",markersize=5)
plt.yscale('log')

f:id:unEmployed:20170206212354p:plain

感想

  • 結果の取得に時間がかかりすぎ。threading?とかをすると早いようだけれど、解説を読んでも意味がわからなかった。

  • あと、検索結果の取得は、1〜3秒くらいの間隔でランダムに取得すべきだったんだろう…とあとで気づいた。

参考

https://automatetheboringstuff.com/chapter11/