工作の2S(Seiri/Seiton)

工作やプログラムでやったことをまとめていきます

Python3でWebサイトのデータを取ってみた(PyCharmはじめ)

●こんにちわ!

PyCharmを導入してみたのでちょっと遊んでみた
結果的に作りたいものは作れなかった
もうちょい腕を磨けばできると信じて棚にそっとしまう
(来週もう一度トライすることにする・・・)


ちなみに、こういうのでデータを拾ってくのを、Webスクレイピングクローラーといって、しつこくやると違法だったり、そもそも認めていないサイトもあるらしく
軽率にやるのは注意が要りそう
 ↓この記事が有名らしい(これ自体は違法ではないよう)
岡崎市立中央図書館事件 - Wikipedia

●使用環境

JetBrains PyCharm
Python 3.6

●ライブラリの準備

今回は2つのパッケージを、Default SettingのProject Interpreterからインストールします

1.Project Interpreterを開く

[File]-[Default Settings] [Project Interpreter]とクリック
最初はpipとsetuptoolsくらいしかないので、ここに必要なパッケージを足していく
▼他にもあるがこんな感じ
f:id:kt-marshal:20180520204033p:plain

2.パッケージの追加

今回は下記の2つを使用した

beautifulsoup4
urllib3
バージョンがいくつかあるので注意

画面右の緑の+(プラスアイコン)をクリックする
f:id:kt-marshal:20180520204109p:plain

次の画面で「beautifulsoup4」と検索すると絞られるので
beautifulsoup4を選択した状態で、「Install Package」をクリックしOK
同様にurllib3もインストールする
f:id:kt-marshal:20180520212514p:plain
元の画面もOKで閉じると導入が完了する

3.コード

検索ワードを渡すとタイトルを返すイメージ
Pythonで検索し、結果のtitle_bar内のpのテキストを表示する

  • こまかいタグは対象のサイトに合わせる必要がある
  • 基本はhtmlをガッと取得してfindすれば情報収集はできると思う
  • 探索はChromeデベロッパーツールを使用した
# -*- coding: utf-8 -*-
from time import sleep

import urllib.request
from bs4 import BeautifulSoup


def web_test(wd):
    # オープンする(urlはテスト用なのでそのままでは使用不可)
    html = urllib.request.urlopen('https://www.example.com/search?q=%s' % wd).read()
    soup = BeautifulSoup(html, 'lxml')
    # print(soup) # 結果を確認できる

    # ページタイトルを表示
    print('title:%s' % soup.title.string)

    # 特定のタグを抽出
    title_bar = soup.find(id='title_bar')
    p = title_bar.find('p')
    print(p)
    sleep(1.5) # これを抜くとすごい速さでリクエストしてしまう危険


if __name__ == '__main__':
    res = web_getword('Python')
    if res is None:
        break
    print(res)

Pythonで検索した結果の1つめを表示している
もっと頑張ればいろいろやれることだろう
f:id:kt-marshal:20180520212038j:plain

●補足

Project Interpreterはどうやらプロジェクトごとに作れるみたい
たぶん、このプロジェクトは古めのライブラリで、とかPython2.7でやりたい・・・
なんて使い分けを実現するためだと思う。
なので、パッケージを導入する際は、目的のInterpreter構成を選択していることを確認する必要がある。