Educode -- Web クローリングと情報抽出

レベル 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:]の記録用:

        レコード.ポップ()

        スコア.追加(レコード)

#********** 終わり **********#

    リターンスコア

 

おすすめ

転載: blog.csdn.net/qq_57409899/article/details/124850255