レベル 1: URL を使用してハイパーテキスト ファイルを取得し、ローカルに保存します。
実装コード:
# -*- コーディング: utf-8 -*-
urllib.requestをreqとしてインポートします
私たちを輸入してください
ハッシュライブラリをインポートする
# 防衛技術大学学部入学試験情報ネットワーク入学スコア Web ページ URL:
url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html' # 入学スコアページの URL
デフォルトステップ1():
# 対応する関数を完成させるコードを追加するには、以下のコメントに従ってください。
#********** 始める *********#
# 1. Web ページのコンテンツをデータに保存する
ウェブページ = req.urlopen(url)
データ = webpage.read()
# 2. 学生番号にちなんで名付けられた「nudt.txt」ファイルにデータをバイナリ書き込みモードで書き込みます。
outfile = open("nudt.txt","wb")
outfile.write(データ)
outfile.close()
#********** 終わり **********#
パス 2: サブリンクを抽出する
実装コード:
# -*- コーディング: utf-8 -*-
urllib.requestをreqとしてインポートします
# 防衛技術大学学部入学試験情報ネットワーク入学スコア Web ページ URL:
url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html' # 入学スコアページの URL
webpage = req.urlopen(url) # Webページをクラスファイルとして開きます
data = webpage.read() # Webページのすべてのデータを一度に読み取ります
data = data.decode('utf-8') # バイト型データを文字列にデコードします(そうでない場合は後で別途処理されます)
デフォルトステップ2():
# 空のリスト URL を作成してサブページの URL を保存します
URL = []
# 対応する関数を完成させるコードを追加するには、以下のコメントに従ってください。
#********** 始める *********#
# 2016 年から 2012 年までの各年の分数行のサブサイト アドレスをデータから抽出し、URL リストに追加します
年 = [2016、2015、2014、2013、2012]
年単位:
Index = data.find("防衛工科大学 %s 年度入学得点統計" %year)
href = data[index-80:index-39] # 各特徴文字列に従って URL 部分文字列を抽出します
ウェブサイト = 'http://www.gotonudt.cn'
urls.append(ウェブサイト+href)
#********** 終わり **********#
URLを返す
レベル 3: Web ページのデータ分析
実装コード:
# -*- コーディング: utf-8 -*-
urllib.requestをreqとしてインポートします
輸入再
# 国立防衛大学学部入学情報ネットワークの 2016 年度入学スコア Web ページの URL:
URL = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/info/2017/717.html'
webpage = req.urlopen(url) # ハイパーリンクに従ってリンクされた Web ページにアクセスします
data = webpage.read() # ハイパーリンク Web ページのデータを読み取る
data = data.decode('utf-8') # バイト型を文字列にデコードします
# Web ページの最初のテーブルのすべてのコンテンツを取得します。
table = re.findall(r'<table(.*?)</table>', data, re.S)
firsttable = table[0] # Web ページの最初のテーブルを取得します
# データ クリーニング、テーブル内の 、\u3000、およびスペースを削除します
firsttable = firsttable.replace(' ', '')
firsttable = firsttable.replace('\u3000', '')
firsttable = firsttable.replace(' ', '')
デフォルトステップ3():
スコア = []
# 対応する機能を完了するには、以下のコメントに従ってコードを追加してください。詳細な HTML コードを表示するには、ブラウザで URL を開いてページのソース コードを表示します。
#********** 始める *********#
# 1. tr タグを押してテーブル内のすべての行を取得し、リスト行に保存します。
rows = re.findall(r'<tr(.*?)</tr>', firsttable, re.S)
# 2. 行内のすべての要素を反復処理し、各行の td タグ内のデータを取得し、データを項目リストに形成して、各項目をスコアリスト リストに追加します。
スコアリスト = []
行内の行の場合:
項目 = []
tds = re.findall(r'<td.*?>(.*?)</td>', row, re.S)
tds の td の場合:
rightindex = td.find('</span>') # return -1 は見つからないことを意味します
leftindex = td[:rightindex].rfind('>')
items.append(td[leftindex+1:rightindex])
スコアリスト.追加(項目)
# 3. 州とスコアで構成される 7 要素のリスト (スコアが存在しない場合は、\ に置き換えます) を新しいリストのスコアの要素として保存します。冗長な情報は保存しません。
スコアリスト[3:]の記録用:
レコード.ポップ()
スコア.追加(レコード)
#********** 終わり **********#
リターンスコア