Python3+Scrapy1.5でCakePHPのリリース日の情報を取得してみた

Scrapyを使ってWebページから文字列を取得しようとしてみたけれど、
いい題材がなかったのでCakePHPのリリース日の情報を取得してみた。

Scrapyのページに書かれているサンプルプログラムを元に修正をした。
https://scrapy.org/

import scrapy

class BlogSpider(scrapy.Spider):
  name = 'blogspider'
  start_urls = ['https://bakery.cakephp.org/categories/release.html']
  def parse(self, response):
    for date in response.css('.post-archive'):
      print(date.css('div>h4::text').extract_first() + date.css('div>h4>span::text').extract_first() + ' ' + date.css('div>h2>a::text').extract_first())

出力結果
2018 Sep 03 CakePHP 2.10.12 Released
2018 Sep 02 CakePHP 3.6.11 Released
2018 Aug 04 CakePHP 3.6.10 Released
2018 Jul 25 CakePHP 3.6.9 Released
2018 Jul 23 CakePHP 3.6.8 Released
(略)

Pythonのlxmlとcssselectのインストール

Webページからデータを取得するライブラリをインストールする。

> pip install lxml
> pip install cssselect

コマンドでインストール済みか確認する。

>pip list
cssselect (1.0.1)
lxml (3.8.0)

>pip freeze
lxml==3.8.0
cssselect==1.0.1

lxmlライブラリを用いて、Webページからaタグの情報を取得する。

import lxml.html

tree = lxml.html.parse('http://docs.python.jp/3/')
html = tree.getroot()

for a in html.cssselect('a'):
    print(a.get('href'), a.text)
# 出力結果
# genindex.html 索引
# py-modindex.html モジュール
# https://www.python.org/ Python
# ~略~

Python3.6.1で確認した。

Pythonのpipコマンドでライブラリをインストールする

Pythonのpipコマンドでライブラリをインストールする。
pipコマンドはPython3.6.1時点では最初から含まれている。

> pip -V
pip 9.0.1

Requestsライブラリをインストールする。そのあと、freezeとlistでインストールしたことを確認する。

> pip install requests
> pip freeze
requests==2.18.1
> pip list
requests (2.18.1)

Requestsライブラリが動くか確認するため、pyでPythonを起動する。
Yahooのページにリクエストをした結果、応答が200で返ってきおり、ライブラリが動いていることが確認できた。

>>> import requests
>>> r = requests.get('http://yahoo.co.jp')
>>> type(r)
<class 'requests.models.Response'>
>>> r.status_code
200

Pythonで複数行コメントを書くやり方

Pythonのコメントは#(Hash)を使う。では、複数行のときはどう書くのか調べた。
複数行のコメントをしたい場合。
‘(Single quote)か”(Double quote)を3つ並べた行で、コメントしたい行を挟めばよい。
Python3.6.1で確認した。

print(1)
'''
print(2)
print(3)
'''
print(4)
"""
print(5)
print(6)
"""

# 結果
# 1
# 4

ランダムの数値を出力する

ランダムの数値を出力するとき。
PHPの場合、mt_rand()を用いる(rand()は、すでに古いみたい)。
Pythonの場合、random()を用いる。Pythonの方は、マニュアルに色々な乱数の関数が載っていた。
セキュリティ目的で本関数を使ってはいけないと、どちらのマニュアルにも記載されていた。

echo mt_rand();
echo mt_rand(1, 100);
import random
print(random.random())
print(random.randint(1,100))

PHP5.6.28、Python3.6.1で確認した。

Python3.6.1をインストールしてHello, Python.を出力してみた。

今後、コード確認に使いたいので、WindowsにPython3.6.1をインストールしてHello, Python.を出力してみた。

Pythonの公式サイトからインストーラをダウンロードして、デフォルトのままインストールした。
pyファイルを作成して、コマンドプロンプトよりpythonコマンドで実行した。
所要時間は、ダウンロードしてからHello, Pythonを出力するまでに約20分前後。

print('Hello, Python.')