urllibはのインポート解析 から urllibはのインポート要求 から lxmlのインポートetree インポート時間 クラス:新規 DEF __init__(自己、* :引数) self.name = 引数[0] self.dict =引数[1 ] self.txt = '' のためのキーでソート(self.dict): self.txt = self.txt + self.dict [キー] DEF (自己)書き込み: F =オープン(self.name +' .txtの'、' W ' ) f.write(self.txt) f.close() #获取网页源代码 DEF get_http_page(URL、** KW): ヘッダー = { " ユーザエージェント":" はMozilla / 5.0 (Windows NTの10.0; Win64の、のx64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 77.0.3865.90サファリ/ 537.36 " } REQ = request.Request(URL、ヘッダー= ヘッダ) 応答 = request.urlopen(REQ) ページ = response.read() エンコーディング =' GBK ' もしKW: エンコーディング = KW [ ' エンコーディング' ] ページ = page.decode(符号化) リターンページ #获取漫画目录 DEF get_comics_directory(URL): url_list = [] ページ = get_http_page(URLエンコード= " UTF-8 ' ) HTML = etree.HTML(ページ) の結果 = html.xpath(' / HTML /本体/ DIV [2] / DIV / DIV [2] / H3 / A ' ) elment_select = なし 場合lenは(結果): URL2 = [0]に.get(結果' のhref ' ) 場合をURL2: ページ = get_http_page(URL2) HTML = etree.HTML(ページ) elment_select = html.xpath(' / HTML /本体/ DIVの[ 4] / DIV [9] /スパン[2] /選択' ) 場合:(elment_selectをLEN) result_option = elment_select [0] .findall(' オプション' ) のためにオプションでresult_option: url_list.append('https://m.wenxuemi6.com {} ' .format(option.get(' 値' ))) を返すurl_list DEF(downdload_txt url_list、** KW): 場合KW: 開始 = INT(KW [ ' 開始' ] ) 停止 = INT(KW [ ' 停止' ]) 場合 > = 0を起動し、 <LEN(url_list開始)及び停止>起動と <停止)LEN(url_listを: カウント = KW [ ' 開始' ] COUNT_MAX =キロワット[ ' STOP ' ] 他: COUNT = 0 COUNT_MAX = LEN(URL_LIST) 印刷(' お待ちください、ディレクトリやチャプターアドレスをクロールしている...... ' ) D = {} しばらく COUNT < COUNT_MAX: URL = URL_LIST [ COUNT] ページ = get_http_page(URL) HTML = etree.HTML(ページ) 結果は = html.xpath(' / HTML /ボディ/ DIVの[4] / UL [2] /リチウム/ A ') TXT = '' もしタイプ(結果)。__name__ == ' リスト' : のために L における結果: URL = ' https://m.wenxuemi6.com {} ' .format(l.get(' のhref ' )) #1 url_list.append( 'https://でM .wenxuemi6.com {}」形式(l.get( 'のhref'))) プリント(' URLによってダウンロード章:{} ' .format(URL)) D2 = { ' {} ' .format(カウント):} ページ = get_http_page(URL) のhtml = etree.HTML(ページ) url_next = html.xpath(' // * [ID @ = "pb_next"] ' ) 、T = html.xpath(" // * [ID @ =」 NR1 "] /テキスト()' ) T2 = html.xpath(' // * [ID = @" NR1 "] / P ' ) txt_title = '' txt_title_list = html.xpath(' // * [ID @ =" nr_title "] /テキスト()") の場合タイプ(txt_title_list)。__name__ == ' リスト' : もし(LEN(txt_title_list)== 1 ): txt_title = txt_title_list [0] TXT = TXT + txt_title + ' \ R \ n ' のために L2 におけるT: TXT = TXT + L2 + ' \ R \ n ' もし型(T2)。__name__ == ' リスト' : もし LEN(T2)== 1 : URL= ' https://m.wenxuemi6.com {} ' .format(l.get(' のhref '): - 5] + ' _2.html ' ) プリント(' ダウンロード章URLによって:{} ' .format (URL)) ページ = get_http_page(URL) のhtml = etree.HTML(ページ) トン = html.xpath(' // * [@ ID = "NR1"] /テキスト()' ) のために L2 でのT: TXTTXT + L2 + = ' \ R&LT \ N- ' D2〔' {} ' .format(カウント)= TXTの d.update(D2) time.sleep( 1 ) リターンD IF __name__ == ' __main__ ' : txt_name = INPUT (" 検索対象のタイトルを入力してください:" ) URL = ' https://m.wenxuemi6.com/search.php?keyword= {} ' .format(parse.quote(txt_name)) リファラー = URLの URL_LIST =get_comics_directory(URL) #の小説は、下の最初のページディレクトリをダウンロードした D = downdload_txt(URL_LIST、[スタート] = 0、= STOP。1 ) N1 = 小説(txt_name、D) #の書き込みファイル[txt_name] .txtのカレントディレクトリへの N1。書き込み() #のダウンロード完全新規 D2 = downdload_txt(URL_LIST、START = 0、= STOP 1 ) N2 = 新規(txt_name、D2) #1 ライト・ファイル[txt_name] .txtの現在のディレクトリに n2.write()