# -*- coding: utf-8 -*-
# @time : 2020/5/9 19:03
# @author : 我就是任性-amo
# @filename: 76.抓取**目錄和全文.py
# @software: pycharm
# @blog :
import requests # 第三方模組 需要使用pip安裝
import re # 匯入正則模組
import os
# 構造請求頭
headers =
# todo 1.根據**鏈結得到**目錄和對應的url
defget_catalogue
(url)
:# 傳送請求
response = requests.get(url=url, headers=headers)
response.encoding =
"utf-8"
# 指定編碼
chapter_info_list =
# 用來儲存獲取到的所有url和章節標題資料
if response.status_code ==
200:
# 判斷請求是否成功
li_list = re.findall(r".*"
, response.text)
# 過濾 獲取所有的li標籤
for li in li_list:
# print(li)
result = re.search(r'href="(.*)" title="(.*)"'
, li)
# 過濾出url和標題
if result:
# 組成完整的url
chapter_url =
""+ result.group(1)
# 得到章節的標題
title = result.group(2)
# 使用字典儲存url和title
chapter =
# 將字典新增到列表中
print
(chapter_info_list)
return chapter_info_list
# todo 2.根據章節目錄,抓取目錄對應的url指定的**正文頁面
defget_content
(chapter_info_list)
:for chapter_info in chapter_info_list:
# 傳送請求
response = requests.get(url=chapter_info[
"url"
], headers=headers)
if response.status_code ==
200:
# 判斷請求是否成功
# 判斷**資料夾是否存在
if os.path.exists(
"novel_鬥破蒼穹"):
pass
else
: os.makedirs(
"novel_鬥破蒼穹"
) content_list = re.findall(r""
, response.content.decode(
"utf8"))
[1:-
1]# 建立檔案 並將**正文寫入檔案中
with
open
("./novel_鬥破蒼穹/"
+ chapter_info[
"title"]+
".txt"
,"w"
, encoding=
"utf8")as
file
:# 將內容一行一行的寫入檔案中
for content in content_list:
file
.write(content +
"\n"
)if __name__ ==
'__main__'
: get_content(get_catalogue(
"/doupocangqiong/"
))
程式執行結果如下圖所示:
python每日一練
人生苦短,我用python 2018.6.5 有個目錄,裡面是你自己寫過的程式,統計一下你寫過多少行 包括空行和注釋,但是要分別列出來 coding utf 8 import re import glob defcodecolletion path filelist glob.glob path p...
Python每日一練
人生苦短,我用python 2018.6.13 最近事情有點多,有幾天沒寫了,正好最近需要統計一下各組排名,也就拿python代替手工了 各組給出其他組的排名,統計每個組最終的得分,第一名為0.5,第二名0.4,以此類推。coding utf 8 groups 3,2,5,4,6 1,3,5,6,4...
每日一練 no 18 約瑟夫問題
據說著名猶太歷史學家 josephus 有過以下的故事 在羅馬人占領橋塔帕特後,39個猶太人與 josephus 及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下乙個重新報數,直...