はじめに
Qiitaの記事を読んでいて、たまに目にする「お前らの ~~ は間違っている」
というタイトル。
様々な内容について私たちの間違いを指摘してくれているが、私たちはどんなジャンルのものを間違えてしまうのだろう。
と思ったので、Pythonを使ってどんなタグについてよく間違えているのか抽出してみた。
開発環境
macOS Mojave 10.14.5
Python 3.7.3
beautifulsoup4
matplotlib
コード
実際に書いたコードをこちらに添付する。
コードの中身としては、検索URLベタ書きしてスクレイピングを行うだけの簡単なものになっている。
getQiita.py
import time
import json
import urllib.request
import numpy as np
import collections
import matplotlib.pyplot as plt
from bs4 import BeautifulSoup
paging = 1
first = 'title:'+'お前ら'
second = 'title:'+'間違っている'
speace = ' '
tagText = []
# 検索文字をパース
parseFirst = urllib.parse.quote(first)
parseSecond = urllib.parse.quote(second)
parseSpeace = urllib.parse.quote(speace)
def getSoup(page):
url = 'https://qiita.com/search?page='+str(paging)+'&q='
#URL作成
scrap = urllib.request.urlopen(url + parseFirst + parseSpeace +parseSecond)
#取得したURLでBeautifulSoupを使う
soupbase = BeautifulSoup(scrap)
return soupbase
soup = getSoup(paging)
# webページをタグで検索
itemCount = soup.find("span", attrs= {"class":"badge"})
# ページ数の取得(切り上げ)
maxPaging = -(-int(itemCount.text) // 10)+1
for i in range(paging,maxPaging):
#ページング用
paging = i
soup = getSoup(paging)
tagList = soup.find_all("li", attrs={"class": "tagList_item"})
#tagList_itemのテキストを取得
for tags in tagList:
tagText.append(tags.text)
#スクレイピング間隔を開ける
time.sleep(1)
# 取得したタグを降順にソートして10位以上のものを取得
countTags = collections.Counter(tagText).most_common(10)
for k,v in countTags:
plt.bar(k,v)
# matplotlibを用いて結果のグラフを出力
plt.title('間違えているランキング')
plt.xlabel('登録タグ')
plt.ylabel('登場回数')
plt.show()
出力結果
実行結果は棒グラフとして出力される。
「おまえらの」 「間違っている」をタイトルに含む投稿の上位10タグは以下の通りとなった。
感想
全然投稿されてない思っていたよりも投稿された記事数が少なかったです。
普段目にしていたのは検索エンジンの方だったのかも知れません。
とりあえず書いて動かしてみただけなので、もっと綺麗な書き方があると思います。
ここはこうした方が良い、コードが汚い等の指摘を頂けると筆者の励みになりますので、ぜひお願いします!