【邵奈一】Python爬虫コラム(一)のPython爬虫ウォーミングアップ

11906 ワード

チュートリアルディレクトリ
  • 0 0 x 00チュートリアル
  • 0 x 01 Python環境準備
  • 1. Windows環境
  • 2. MacOS環境
  • 0 x 02 Python文法熟知
  • 1. Pythonシミュレーションログ生成例
  • 2. 構文の例
  • 3. データ型
  • 0 x 03爬虫類初体験
  • 0 xFFまとめ
  • 0 x 00チュートリアルの内容
  • なぜPython
  • を学ぶのか
  • 学会インストールPython環境
  • Pythonの文法に詳しい
  • Python爬虫類初体験
  • 学習前提:1、プログラミングの基礎が必要で、Pythonに詳しくないことができます.
    0 x 01 Python環境準備
    1.Windows環境
    手順は非常に簡単で、ここでは詳細に展開しません.チュートリアル:Python 3のインストール(Windows)を参照してください
    2.MacOS環境
    MacOSは一般的に2.XバージョンのPythonは、一般的にPython 3バージョンを追加します.操作はWindowsバージョンと似ていますが、ここでは詳しく説明しません.自分でチュートリアルを探すことができます.
    0 x 02 Python文法熟知
    1.Pythonシミュレーションログ生成例
    コードおよびプレゼンテーションチュートリアル:Pythonシミュレーションログ生成
    2.構文の例
    1、文字セットの設定
    #coding=UTF-8
    

    2、パッケージのインポート
    import random
    

    パッケージの特定のモジュールをインポートして名前を変更する必要がある場合は、from pyquery import PyQuery as pq3、配列の定義
    url_paths = [
        "article/112.html",
        "article/113.html",
        "article/114.html",
        "article/115.html",
        "article/116.html",
        "article/117.html",
        "article/118.html",
        "article/119.html",
        "video/821",
        "tag/list"
    ]
    
    ip_splices = [102,71,145,33,67,54,164,121]
    

    配列の最後の要素には英語のカンマを付ける必要はありません.文字列は他の言語と同じように、二重引用符で囲まれています.
    4、関数の定義
    def sample_url():
        return random.sample(url_paths,1)[0]
    

    関数体は、関数名の右側にコロン:を付けるだけで、Python言語にはインデントが必要で、関数体の範囲はインデントによって確認されます.
    5、forサイクル
    def sample_ip():
        splice = random.sample(ip_splices,4)
        return ".".join([str(item) for item in splice])
    

    任意にip_を取りますsplicesの4つの数字は、文字列に変換され、点.で接続されています.
    def sample_referer():
        if random.uniform(0, 1) > 0.2:
            return "-"
        refer_str = random.sample(http_referers, 1)
        query_str = random.sample(search_keyword, 1)
        return refer_str[0].format(query=query_str[0])
    

    http_をランダムに取得referers、取得した場合:https://www.baidu.com/s?wd={query},さらにランダムにquery_を取得str、例えば:Docker Spark ( )、そしてformatメソッドによってquery_strは{query}に付与され、最終的にはhttps://www.baidu.com/s?wd=Docker Spark ( )と同様の結果が得られる.ここで注意しなければならないのはrandom.sample(http_referers, 1)が1つの配列を取ったので、後で使用するときはrefer_str[0]のような中の値を取る必要があります.
    def generate_log(count = 10):
    
        time_str = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
    
        f = open("D:\\python-logs.txt","w+")
    
        while count >= 1:
            generate_log = "{ip}\t{localtime}\t \"GET /{url} HTTP/1.1 \" \t{referer}\t{code}".format(
                url = sample_url(),
                ip = sample_ip(),
                referer = sample_referer(),
                code = sample_status_code(),
                localtime = time_str
                )
            print generate_log
            f.write(generate_log + "
    "
    ) count = count - 1

    コード解釈:1、time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())、time.localtime()は、ローカル時間を取得し、特定のフォーマットでフォーマットします.
    strftime()リファレンスチュートリアル:Python time strftime()メソッド
    2、f = open("D:\\python-logs.txt","w+")、新しいファイルfw+は、権限が読み書き可能であることを意味し、開くファイルがすでに存在する場合は、空になり、存在しない場合は作成されます.
    Open()リファレンスチュートリアル:Pythonでのopen()メソッドのまとめ
    3、print generate_log、印刷出力
    4、f.write(generate_log + "
    ")
    fの書類に書きます.
    # URL    IP          referer                     
    if __name__ == '__main__':
        generate_log(100)
    

    main関数、メインメソッド.
    3.データ型
    1、Pythonには5つの標準的なデータ型があるNumbers(数字)String(文字列)List(リスト)Tuple(タプル)Dictionary(辞書)
    Pythonは4つの異なるデジタルタイプをサポートしています.int(符号付き整数)long(ロング整数[8進数と16進数を表すこともできる])float(浮動小数点型)complex(複数)
    注意:Python 2.2以降のバージョンでは、intタイプのデータがオーバーフローすると自動的にlongタイプに移行します.longタイプはPython 2にのみ存在する.XバージョンではPython 3.Xバージョンではlongタイプが削除され、intで置き換えられます.
    0 x 03爬虫類初体験
  • 体験チュートリアル:Python初の爬虫類プロジェクト
  • 補足知識:
  • !/usr/bin/python#!/usr/bin/env pythonの違いは?#!/usr/bin/pythonは、/usr/bin/ディレクトリの下でpythonを探して#!/usr/bin/env pythonを実行することを指し、#!/usr/bin/envの中でpythonのインストールパスを見つけて実行することを指します.ここで実行可能なpythonパスは、/usr/binの下でもよいかどうかにかかわらず、使い方が柔軟ですが、#!/usr/bin/pythonは絶対パスとして書かれており、/usr/binの下で探すしかありません.結論:#!/usr/bin/env pythonの使用を推奨
    0 xFFまとめ
  • のコラムはホワイトチュートリアルではなく、プログラミングの基礎が必要で、Pythonの基礎さえ必要です.
  • 実戦性が強く、だらだらしないで、いいね、コメント、コレクションをクリックして、引き続き下へ勉強してください.

  • 邵奈一全桟エンジニア、市場洞察者、コラム編集|公衆番号|微信|微博|CSDN|簡書|
    福祉:邵奈一の技術ブログは邵奈一のオリジナルをナビゲートするのは容易ではありません.転載したら出典を明記してください.