はじめに
こんにちは、野村です。
今回は、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スクレイピングについて復習した際のメモでした。
というわけで、今回はこれにて。