【python3】webスクレイピングについて復習してみる

はじめに

こんにちは、野村です。

今回は、python3を使ったwebスクレイピングについて復習した際のメモです。

以前、テキストブラウザをメインに使っていたとき、効率よくwebサイトを巡回するために活用したもんです。

ソースを取得する

何はなくともrequestsをインストール。標準的なHTTPライブラリです。
その前に、pip3が入ってなかったのでインストールした(ubuntu18の場合)。

$ sudo apt install python3-pip
$ pip3 install requests

ソース

import requests
headers = {"User-Agent": "hoge"}
url = "http://atomiyama.com"
resp = requests.get(url, timeout=1, headers=headers)
print(resp.text)

実行するとページのソースが書き出されます。
ちなみに、User-Agentをそれらしく書かないとアクセスを拒否するサイトもあった。

タグを指定して取得

beautifulsoup4を使います。
htmlパーサ「lxml」を使いたいのでいろいろインストール(ubuntu18の場合)。

$ sudo apt install libxml2-dev libxslt1-dev python3-dev
$ sudo apt install python3-lxml
$ pip3 install beautifulsoup4

とりあえずbタグだけを取得してみる。

import requests
from bs4 import BeautifulSoup

headers = {"User-Agent": "hoge"}
url = "http://atomiyama.com"
resp = requests.get(url, timeout=1, headers=headers)

soup = BeautifulSoup(resp.text, "lxml")
print(soup.find_all("b"))

いろいろな条件

soup.find("a") //先頭のタグだけ取得(1)
soup.a //先頭のタグだけ取得(2)

soup.find_all("a") //すべて取得

//属性を指定して取得
soup.find_all("a", attrs={"class": "ClassName", "href": "/index.html"})

//セレクタで指定して取得
soup.select("#IdName")
soup.select(".ClassName")
soup.select('a[href^="http://"]')

おわりに

以上、python3を使ったwebスクレイピングについて復習した際のメモでした。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。twitterやってます⇒https://twitter.com/usr_sbin。Facebookもやってます⇒https://www.facebook.com/nomura.634