#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 」) 、メイン()