[ルーキー] Pythonオブジェクト指向を使用するとXPathを登ることを学ぶキャッツアイフィルムトップ100を取ります

オブジェクト指向フィルムおよびXPathクロール猫トップ100

インポート時間
 インポートJSONの
 インポート要求
 から lxmlのをインポートetreeの


クラスMaoYanTop100(オブジェクト):
     デフ __init__ (自己):
        self.url = ' https://maoyan.com/board/4 ' 
        self.headers = {
             " ユーザエージェント"" はMozilla / 5.0(Windows NTの10.0; Win64の、のx64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 74.0.3729.108サファリ/ 537.36 " 
        } 

    DEF get_data(自己、URL、PARAM):
        応答= requests.get(URL、のparams = PARAM、ヘッダ= self.headers、検証= False)が
         印刷(response.request.url)
         リターンresponse.textの

    デフparse_content(自己、テキスト):
        DOM = etree.HTML(テキスト)
         のリターンDOM 

    DEF 構文解析(自己、DOM)
        ノード = dom.xpath(' // DD ' のためのノードノード:
             収率{
                 ' タイトル':node.xpath(' .//p/a/@title ' )[0 ]、
                 "俳優':node.xpath(' .// P [クラス@ = "スター"] /テキスト()' )[0] .strip()、
                 ' 時間':node.xpath(' .//p[@class = "releasetime"] /テキスト()' )[0] 
            } 

    DEF 保存(自己、F、項目):
        f.write(json.dumps(項目、インデント = 2、ensure_ascii =偽)+ ' 、\ n ' 

    デフ(自己)を実行します。
        ページ = INT(入力(' 请页码输入:' )) オープンと' maoyan.json '"")f_objとして:
             のために:範囲(ページ)
                PARAM = {
                     ' 開始':I * 10 
                } 
                テキスト = self.get_data(self.url、PARAM)
                time.sleep( 1 
                DOM = self.parse_content(テキスト)
                my_generator = self.parse(DOM)
                 一方TRUE:
                     試すitem_list = [] 
                        アイテム=次の(my_generator)
                         #1 item_list.append(項目)
                        self.save(f_obj、項目)
                     を除くBREAK 
                プリント(F ' {I + 1}完了ページデータが保存の' 


IF  __name__ == ' __main__ ' 
    maoyan = MaoYanTop100 ()
    maoyan.run()

 

おすすめ

転載: www.cnblogs.com/liduo0413/p/11513092.html