Pythonでのウェブスクレイピング

Pythonによるデータインポート中級

Hugo Bowne-Anderson

Data Scientist at DataCamp

HTML

  • 非構造化データと構造化データの混在

  • 構造化データ

    • 事前定義されたデータモデルや

    • 定義された方法で整理されている

  • 非構造化データ: 定義や規則を持たない

ch_1_3.008.png

Pythonによるデータインポート中級

BeautifulSoup

  • HTMLから構造化データを解析・抽出する

ch_1_3.011.png

  • タグスープを整え、情報を抽出する
Pythonによるデータインポート中級

BeautifulSoup

from bs4 import BeautifulSoup
import requests
url = 'https://www.crummy.com/software/BeautifulSoup/'
r = requests.get(url)
html_doc = r.text
soup = BeautifulSoup(html_doc)
Pythonによるデータインポート中級

pretiffy適用後のSoup

print(soup.prettify())
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/transitional.dtd">
<html>
 <head>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
  <title>
   Beautiful Soup: We called him Tortoise because he taught us.
  </title>
  <link href="mailto:[email protected]" rev="made"/>
  <link href="/nb/themes/Default/nb.css" rel="stylesheet" type="text/css"/>
  <meta content="Beautiful Soup: a library designed for screen-scraping HTML and XML." name="Description"/>
  <meta content="Markov Approximation 1.4 (module: leonardr)" name="generator"/>
  <meta content="Leonard Richardson" name="author"/>
 </head>
 <body alink="red" bgcolor="white" link="blue" text="black" vlink="660066">
  <img align="right" src="10.1.jpg" width="250"/>
  <br/>
  <p>
Pythonによるデータインポート中級

BeautifulSoupの実践

  • さまざまな手法
print(soup.title)
<title>Beautiful Soup: We called him Tortoise because he taught us.</title>
print(soup.get_text())
Beautiful Soup: We called him Tortoise because he taught us.
You didn't write that awful page. You're just trying to
get some data out of it. Beautiful Soup is here to 
help. Since 2004, it's been saving programmers hours or
days of work on quick-turnaround screen scraping 
projects.
Pythonによるデータインポート中級

BeautifulSoupの実践

  • find_all()
for link in soup.find_all('a'):
    print(link.get('href'))
bs4/download/
#Download
bs4/doc/
#HallOfFame
https://code.launchpad.net/beautifulsoup
https://groups.google.com/forum/?fromgroups#!forum/beautifulsoup
http://www.candlemarkandgleam.com/shop/constellation-games/
http://constellation.crummy.com/Constellation%20Games%20excerpt.html
https://groups.google.com/forum/?fromgroups#!forum/beautifulsoup
https://bugs.launchpad.net/beautifulsoup/
http://lxml.de/
http://code.google.com/p/html5lib/
Pythonによるデータインポート中級

練習しましょう!

Pythonによるデータインポート中級

Preparing Video For Download...