#author("2020-03-26T09:59:47+09:00","default:yakumo_murakami","yakumo_murakami")
#author("2022-06-26T02:39:35+09:00","default:yakumo_murakami","yakumo_murakami")
[[今さらPython]]

* ファイルの存在確認は? [#c893f37f]

 # もしファイルがあったら消す。
 if(os.path.exists("wavfile.wav") == True):
     os.remove("wavfile.wav")

* ダウンロードを書いてみる。 [#l4a6bf2a]

ファイルの有無で分岐し、ないか古いならダウンロードしてみましょう。~
サンプルは、ここの管理人の投稿しているネット小説のサイトね。単純なサイト構成だし権利上の問題もないでしょう。

* コード [#qd37421f]
** コード [#qd37421f]

 #!/usr/bin/env python3
 # coding: UTF-8
 
 from urllib import request
 from lxml import html
 import os
 import os.path
 import pathlib
 
 URL = "https://ncode.syosetu.com/n3170ch/"
 fn = "0.html"
 
 #
 # ダウンロードの必要性判定。
 #
 tf = False # URL downloadするかの判定フラグ
 # 該当ファイルがないなら真
 if not os.path.isfile(fn):
	tf = True
 # 該当ファイルがあっても、本スクリプトより古いなら真(URL直接記述なので)
 else:
	ff = pathlib.Path(fn)
	ff2 = pathlib.Path(__file__)
	if ff.stat().st_mtime < ff2.stat().st_mtime:
		tf = True
 
 # 判定結果が真ならダウンロードする。偽ならファイルから読む。
 if tf == True:
	html2 = request.urlopen(URL).read()
	with open(fn, mode='w') as f:
		f.write(html2.decode('utf-8'))
 else:	
	with open(fn, mode='r') as f:
		html2 = f.read().encode('utf-8') # fromstringに食わせるのはbyteである必要がある
 
 print(type(html2))
 
 # スクレイピングしてリンクの一覧を取り出す。
 data3 = html.fromstring(html2) # str()してはいけない。化ける
 ttls = data3.xpath("//dl//dd//a")
 for x in ttls:
	if type(x.text) is str and len(x.text) > 3:
		#print(type(x))
		xname = x.text
		xlink = x.attrib['href']
		print(xname,"\t",xlink)


* 実行結果 [#o545e026]
** 実行結果 [#o545e026]

 <class 'bytes'>
 プロローグ       /n3170ch/1/ 
 魔法の考察       /n3170ch/4/
 ぽんこつバイオレンスと出会い     /n3170ch/5/
 旅のお供完成     /n3170ch/6/
 砂浜と結界       /n3170ch/7/
 拾いました。     /n3170ch/8/
 追憶の魔法       /n3170ch/10/
 旅路のあれこれ   /n3170ch/11/
 ポリット平原(1)          /n3170ch/12/
 ポリット平原(2)          /n3170ch/13/
 教団の女         /n3170ch/14/
 とんずらしよう   /n3170ch/16/
 廃隧道(はいずいどう)     /n3170ch/17/
 それぞれの夜     /n3170ch/18/
 女は強し?       /n3170ch/19/
 異世界の人々     /n3170ch/20/
 砂漠の町にて     /n3170ch/21/
 魔族と文化       /n3170ch/22/
 アイリスの事情   /n3170ch/23/

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS