Pyhonの社内勉強会に参加した

スクレイピング、クローリング

社内で行われたBeautifulSoupを使ってスクレイピングとクローリングの勉強会に参加しました。

前準備

phyon3とpip3が使えていること!

下記のライブラリを使うのでインストールする

pip3 install requests
pip3 install beautifulsoup4
pip3 install lxml

スクレイピング

とりあえず全部取ってみる

import requests
from bs4 import BeautifulSoup

url = "https://www.yahoo.co.jp/"
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
print(soup)

一部のタグを1個だけとる

import requests
from bs4 import BeautifulSoup

url = "https://www.yahoo.co.jp/"
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
title = soup.find('title')

print(title)

要素を1個だけ

import requests
from bs4 import BeautifulSoup

url = "https://www.yahoo.co.jp/"
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
title = soup.find('title').text

print(title)

 タグの中のオプションを1個だけとる

import requests
from bs4 import BeautifulSoup

url = "https://www.yahoo.co.jp/"
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
a = soup.find('a')
link = a.attrs['href']
print(link)

複数のリンクタグを取得する

import requests
from bs4 import BeautifulSoup

url = "https://www.yahoo.co.jp/"
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
a = soup.find_all('a')
print(a)

複数のリンクタグをみやすく表示

import requests
from bs4 import BeautifulSoup

url = "https://www.yahoo.co.jp/"
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
a_link = soup.find_all('a')

for a in a_link:
	text = a.text
	href = a.attrs['href']
	print(text + "のリンク先" + href)

hrefがかけているサイトのリンクを取得

import requests
from bs4 import BeautifulSoup

url = "https://ja.wikipedia.org/wiki/"
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
a_link = soup.find_all('a')

for a in a_link:
	text = a.text
	if 'href' in a.attrs:
		href = a.attrs['href']
		print(text + "のリンク先" + href)

要素を指定して範囲を絞る

import requests
from bs4 import BeautifulSoup

url = "https://ja.wikipedia.org/wiki/"
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
a_link = soup.find('div',{'id' : 'bodyContent'}).find_all('a')

for a in a_link:
	text = a.text
	if 'href' in a.attrs:
		href = a.attrs['href']
		print(text + "のリンク先" + href)