録音およびエクスポートExcelの表を示します

#1 = UTF-8コーディング
#の@auther:Mana_菜小刀
のインポート要求が
 インポートキューの
 インポートスレッド
 輸入xlrdの
 輸入xlwtを
 から lxmlのインポートetree
 から xlutils.copy インポートコピー
 から requests.packages.urllib3.exceptions インポートInsecureRequestWarningの

requests.packages.urllib3を。 disable_warnings(InsecureRequestWarning)
ヘッダー = {
     " ユーザエージェント""Mozilla / 5.0(のWindows NT 6.1; WOW64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 65.0.3325.146サファリ/ 537.36 " 
} 

myxls = xlwt.Workbook()
シート1 = myxls.add_sheet(' 收录検索' 
lst_name = [ ' URL '' 收录/未收录'' 图片' ]
 のための I における範囲(LEN(lst_name)):
    sheet1.write(0、I、lst_name [i])と
myxls.save(' result.xls ' 

DEFログ(* argsを、** kwargsから):
     印刷(* argsを、** kwargsから)


クラスbaiduSpider(threading.Thread):
     デフ __init__ (自己、queue_li、名):
        threading.Thread。__init__ (自己)
        self._queue = queue_li 
        self._name = 名前

    DEF (自己)を実行します。
         しばらく ないself._queue.empty():
            URL = self._queue.get()
             してみてください
                self.get_url(URL)
            を除くなどの例外E:
                ログ(e)に
                渡す

    デフ(自己、URL)GET_URL:
        requests.adapters.DEFAULT_RETRIESを= 5 
        、R = requests.session()
        r.keep_alive = Falseを
        S = r.get(URL = URL、ヘッダー= ヘッダ)
         #1 ログ(S) 
        xpather = etree.HTML(s.text)

        STRS = xpather.xpath(' //スパン//テキスト()[クラス= "nums_text" @] ' 
        IMGS = xpather.xpath(' // IMG [@クラス= "C-IMG C-img6"] / @のSRC " #のログ(STRS 、IMGS) 
        search_mo = [ ' 收录'' 未收录 ]' 
        img_mo = [ ' 有图' ' 无图' ] 
        url_mo = url.replace(' http://www.baidu.com/s?wd= ' '' 

        ワークブック = xlrd.open_workbook(' result.xls "、= formatting_info 真)
        シート = workbook.sheet_by_index(0)
        たrowNum = sheet.nrows 
        colNum引数 = sheet.ncols 
        newbook = コピー(ワークブック)
        newsheet = newbook.get_sheet(0)

        IF STRS [0] =!" Baiduは関連性の高い結果を見つけるためにあなたについて0 "   LEN(IMGS)> 0:
            newsheet.write(たrowNum、0、url_mo)
            newsheet.write(たrowNum、 1 、search_mo [0])
            NewSheet .WRITE(たrowNum、 2 、img_mo [0])
            ログ(search_mo [0]、' '、img_mo [0]、' ' 、url_mo)
             #1 newbook.save( 'result.xls')
        のelifのSTR [0] != " Baiduはあなたのために約0関連性の高い結果を見つけるために"   LEN(IMGS)== 0:
            newsheet.write(たrowNum、0、url_mo)
            newsheet.write(たrowNum、 1 、search_mo [0])
            newsheet.write(たrowNum、 2、img_mo [1 ])
            ログ(search_mo [0]、' '、img_mo [1 ]、' ' 、url_mo)
             #1 newbook.save( 'result.xls')
        
            newsheet.write(たrowNum、0、url_mo)
            newsheet.write(たrowNum、 1、search_mo [1 ])
            newsheet.write(たrowNum、 2、img_mo [1 ])
            ログ(search_mo [ 1]、' '、img_mo [1]、' '、url_mo)
        newbook.save(' result.xls ' 

DEF (メイン):
    queue_li = Queue.Queue()
    スレッド = [] 
    THREAD_COUNT = 10 
    myxls = xlwt.Workbook()
    シート1 = myxls.add_sheet(IDF 「「」のURLに」を独自のTXT文書名に: 『』
    を開くと(のURL R エンコード= UTF-8 "、エラー= " 無視Fとして):
        コンテンツ = f.read()
        のURL = content.split(' \ nの' のための URL のURL:
         もし lenは(URL)> 0:
            url_search = のURL 
            queue_li.put(" のhttp: //www.baidu.com/s?wd= {} ' .format(url_search))のための I における範囲(THREAD_COUNT):
        スパイダー = baiduSpider(queue_li、url_search)
        threads.append(クモ)のための I "

    

    :スレッド
        i.start()

    のための I でのスレッド:
        i.join()


    '' ' ログ( "マナ好伟大(^ - ^)V!")''' 

場合 __name__ == ' __main__ ' 
    (ログ" マナ好伟大!(^ - ^)V 
    、メイン()

 

おすすめ

転載: www.cnblogs.com/mana66ccff/p/11184899.html