【Python】PythonのHTTP通信用ライブラリRequestsとBeautiful SoupとSelenium

著者:杉浦

【Python】PythonのHTTP通信用ライブラリRequestsとBeautiful SoupとSelenium

 Pythonは次の標語にある様に、様々なことを簡単なコードで実現することが主目的の言語です。この目的は、多様なライブラリの中から目的に沿ったライブラリを呼び出す、という方法で実現されています。

Python is a programming language that lets you work quickly and integrate systems more effectively
Welcome to Python.org

 この記事では3種類のHTTP通信用ライブラリを目的別に紹介します。
 ひとつはRequestsです。
Requests: HTTP for Humans™ — Requests 2.21.0 documentation
 Requestsはとても簡易なHTTP通信用ライブラリです。例えば次の様にパラメータと宛先を用意してメソッド指定するだけで動きます。これはAPIが用意してある様な、GUIを用いないことを想定している相手との通信で有効です。

import requests

BACKLOG_PARAMS = {
    'apiKey': API_KEY,
    'projectId': PROJECT_ID,
    'summary': data['summary'],
    'issueTypeId': ISSUE_TYPE_ID,
    'categoryId[]': CATEGORY_ID,
    'priorityId': PRIORITY_ID,
    'startDate': data['startDate'],
    'endDate': data['endDate'],
    'estimatedHours': 7,
    'assigneeId': ASSIGNEE_ID,
}

response = requests.post(BACKLOG_URL, params=BACKLOG_PARAMS)
print(response)

pythonの人間のためのHTTPライブラリRequests – 株式会社シーポイントラボ | 浜松のシステム開発会社

 ふたつめはBeautiful Soupです。これはHTMLを始めとした構文解析を活用することができます。大体Requestsと組み合わせて静的なwebページを扱う時に使います。ブラウザを介さないため後述のSeleniumより遥かに高速です。
Beautiful Soup: We called him Tortoise because he taught us.

import requests
from bs4 import BeautifulSoup

response = requests.post(BACKLOG_URL, params=BACKLOG_PARAMS)
soup = BeautifulSoup(response.content)

soup.title
# <title>The Dormouse's story</title>

soup.title.name
# u'title'

soup.title.string
# u'The Dormouse's story'

soup.title.parent.name
# u'head'

 3つ目はSeleniumです。webページのテストでよく使うものでPythonにも用意されています。ブラウザを介する正式な手順を踏むことによってセキュアなページでも手間取ることなくアクセスできます。代わりにブラウザを介する分けっこう重いです。
Selenium with Python — Selenium Python Bindings 2 documentation

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select


def login():
    # ログイン
    driver.get('https://')
    driver.find_element_by_css_selector('input[name="_Account"]').send_keys('sugiura')
    password = ''
    driver.find_element_by_css_selector('input[name="Password"]').send_keys(password)
    driver.find_element_by_css_selector('input[name="Submit"]').send_keys(Keys.ENTER)


if __name__ == '__main__':
    options = Options()
    options.add_argument('--headless')
    # Chromeを起動
    driver = webdriver.Chrome(executable_path="C:\selenium\chromedriver.exe", chrome_options=options)
    login()
  • この記事いいね! (1)

著者について

杉浦 administrator