ぬゅぼうのPython日記【webスクレイピングをするぞ】

↓前回↓

チャットボットを作るにあたって、
一定量の文章データを入手する必要が出てきたのでweblio辞書さんのページからいくらかスクレイピングさせていただこうということになりました。

さて、スクレイピング用のコードですが、上記の記事でも言及した

「Wikipediaからスクレイピングする」禁断のコード

ファイルの奥深くに残留していたので、

コイツをweblioさん用に改造する形で作っていこうと思いマウ
(誤字ったけどなんだかキャッチーなので今後口癖にして行こうと思いマウ。)


発掘された件のコードがこちら。

def suku(t):
	import requests
	from bs4 import BeautifulSoup
	l=list()

	~中略~
(下書き段階では全部書いてましたが規約違反を助長しかねないので削除。ご了承ください)

	if len(l)<=3:
		print("No data")
		l=[]
	else:
		pass
	return l

※一応念を押しておきますが現在は使用しておりません。
残留していた過去の遺物です。

BeautifulSoupとかもう完全に使い方忘れたが…??


そして見てくださいこの雑な関数名!!

まさかのローマ字でsuku!!!!せめてscであれ!!!!!!!!


と、色々ツッコミどころがありますので順次いじっていきましょうね。

def scraping_weblio(word):

関数のネーミングは内容がわかりやすいように、というのが鉄則なので

scrapingweblioをそのまま_で繋いだ非常にわかりやすいそのものズバリ
名前にしておりマウ

import requests
from bs4 import BeautifulSoup

この辺は多分どっかのサンプルコードを
まんまコピペで引っ張ってきただけですね。

l=list()

出力を大量の文章を含んだlist型にするつもりなので
まず空のlistを作っておきます。

list型の変数名、lがち(唐突なあるある)



さて、この先なのですが…


before

h=requests.get( ~削除済~ +t).text
soup=BeautifulSoup(h,"html.parser")

Wikipediaは、【http://(~以下削除済み~)】の
末尾に日本語で項目名を入れると自動でそこに飛ばしてくれるURLになる
という親切な仕様だったんですがweblioはどうなんだろう…
試しに「犬」のページのURL見てみるか。

https://www.weblio.jp/content/犬

シンプル!!!!!!楽勝!!!!!

after

h=requests.get("https://www.weblio.jp/content/"+word).text
soup=BeautifulSoup(h,"html.parser")

次!

for x in soup(["title"]):
		x=x.text.split()
		l.append(x[0])
	for xx in soup(["h","p"]):
		xs=xx.text.split("。")
		for xsi in xs:
			if xsi=="\n":
				pass
			else:
				l.append(xsi)

この辺はもうBeautifulSoupの仕様を忘れた今、完全なるオーパーツと化しておるのでヘタにいじれません。

if len(l)<=3:
		print("No data")
		l=[]
	else:
		pass

この辺は確か「この項目は存在しません」的なページが出た時のための処理
だったんで一旦割愛します。

return l

コレで出力を返します。



そして完成したのがけちら!!
(誤字ったけどなんだかキャッチーなので今後口癖にして以下略)

def scraping_weblio(word):
	import requests
	from bs4 import BeautifulSoup
	l=list()
	h=requests.get("https://www.weblio.jp/content/"+word).text
	soup=BeautifulSoup(h,"html.parser")
	for x in soup(["title"]):
		x=x.text.split()
		l.append(x[0])
	for xx in soup(["h","p"]):
		xs=xx.text.split("。")
		for xsi in xs:
			if xsi=="\n":
				pass
			else:
				l.append(xsi)
	return l


一応完成したので動かしてみる…!この瞬間がいつもドキドキ!!

print(scraping_weblio('犬'))

≫['「犬(イヌ)」の意味や使い方''読み方:いぬ''[名]''1 食肉目イヌ科の哺乳類''嗅覚・聴覚が鋭く、古くから猟犬・番犬・牧畜犬などとして家畜化''多くの品種がつくられ、大きさや体形、毛色などはさまざま''警察犬・軍用犬・盲導犬・競走犬・愛玩犬など用途は広い''''2 他人の秘密などをかぎ回って報告する者''スパイ''「官憲の—」''3 人をののしっていう語''''「請ふらくは君わが家の—に語れ」〈今昔・九・三〇〉'

~(以下略)~ 

成功だ~!!!


Wikipediaに比べると一個一個の文章がやや短めではあるものの、
サンプルとしては十分でしょう。

それでは今回はこの辺にしておいて、
次回からいよいよスクレイピングしたデータをもとにword_group関数を使って単語と文法データを分析していきたいと思いマウ!!!!

ではでは!

この記事が気に入ったらサポートをしてみませんか?