
pythonでWebスクレイピングやってみる①
こんにちは
プログラミング超初心者の試行錯誤をやっていきたいと思います。
5ヶ月ぶりにpythonをまた、勉強しています。
今回できたことは
yahooのトップページからタイトルとURLを抽出するところまでです。
・・・目指すところまで遠いような

スクレイピングって何?
Webページから情報を抽出することです。
記事のタイトルやURLなどを抽出できます
禁止されていたり、法律に抵触する場合もあるのでその辺が難しいですし、注意が必要です。
HTMLタグ等で、サイトのどこに記載されているかを特定し、該当情報を抜き出すのがスクレイピングの基本のようです。
さっそくやってみましょう
必要なライブラリを用意します
pipコマンドで以下をインストール
・requestsをpip installする
pip install requests
・beautifulsoup4をpip installする
pip install beautifulsoup4
■requestsとは
インターネットにリクエスト送信を行って、レスポンスを受領する
■BeautifulSoupとは
取得したHTMLデータから、HTMLタグやCSSのセレクターで欲しい情報を削り取る
出来たソースコード
"""
yahooトップページをWEBスクレイピングしてみよう
"""
#必要なライブラリをインポート
import requests
from bs4 import BeautifulSoup
#スクレイピング対象とするサイトのURL
url = "https://www.yahoo.co.jp/"
#Getメソッドでレスポンスを取得
res = requests.get(url)
#レスポンスのテキスト情報を変数に格納
soup = BeautifulSoup(res.text,'html.parser')
#BeautifulSoupのfindメソッドでh1タグを抽出
title = soup.find('h1')
#h1タグで囲まれているテキスト部分をprint関数で出力
print("WEBページのタイトルは " + title.string)
#findメソッドでh1タグを抽出し、さらにその配下のaタグのhref属性を抽出
link = soup.find('h1').find('a')['href']
print("WEBぺーじのURLは " + link)
出力されました
WEBページのタイトルは Yahoo! JAPAN
WEBぺーじのURLは https://www.yahoo.co.jp
本日はここまでにさせてください。
少しずつコツコツ勉強をやっていきたいと思います。
発想点を実現できるようにコツコツ作っていきたいと思います。
良かったらまたお願いします
いいなと思ったら応援しよう!
