python爬取网站小说并下载实例
生活随笔
收集整理的這篇文章主要介紹了
python爬取网站小说并下载实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目的:
實現在控制臺輸入小說的目錄路徑敲擊回車,實現全本下載
分析:
1.目標網站的網頁結構
2.網站的數據是否有用
需求分析:
1.目錄路徑:
2.章節路徑
通過模擬瀏覽器進行兩次請求:
1.第一次請求小說的目錄的路徑,通過這個請求分析標簽找到章節的路徑,并獲取路徑
2.第二次根據獲取的章節路徑發起第二次請求,獲取小說文字內容
代碼如下
import re import requests from bs4 import BeautifulSoup import os#獲取小說目錄方法 def get_xiaoshou_mulu(xiaoshuo_mulu,header):# 發起請求response = requests.get(url=xiaoshuo_mulu,headers=header)if response.status_code == 200:#設置編碼,要爬取頁面的編碼response.encoding = 'gbk'#將請求的頁面結構進行獲取html = response.content#通過解析器將請求的結構進行解析soup = BeautifulSoup(html,'lxml')#分析頁面標簽tag_dl = soup.find('dl')print(tag_dl)start_flag = Falsefor tag_dd in tag_dl:#找到一個就換行if tag_dd == '\n':continueelif tag_dd.string == '《'+xiaoshuo_name+'》正文卷':start_flag = Trueelif start_flag:#獲取路徑進行下載print(tag_dd.a.string,':',url+tag_dd.a['href'],'------------下載完成!')content_name = tag_dd.a.stringcontent_src = url + tag_dd.a['href']get_xiaoshuo_mulu_content(content_name,content_src)else:print('訪問的頁面不可描述!')#通過章節路徑獲取小說 def get_xiaoshuo_mulu_content(content_name,content_src):#利用連個傳來的參數 進行爬蟲請求 并下載#再發一次請求response = requests.get(url=content_src, headers=header, verify=True)if response.status_code == 200:response.encoding = 'gbk'html = response.contentsoup = BeautifulSoup(html,'lxml')#獲取標簽中的內容div = soup.find(attrs={'id':'content','class':'showtxt'})# sub()正則的替換字符方法lines = re.sub('[\xa0]','\n\n',div.text)#儲存 建立文件夾path = '筆趣小說\\'+xiaoshuo_nameif not os.path.exists(path):os.makedirs(path)print('創建成功!')#根據創建的路徑寫入file = open(path+'\\'+content_name+'.txt','w',encoding='utf-8',newline='')file.writelines(lines)file.close()else:print('訪問不可描述')if __name__ == '__main__':print('====================小說下載助手===============')print('說明:1.輸入小說的目錄路徑 2.輸入小說的名字')header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}xiaoshuo_mulu = input('輸入小說的目錄路徑:')#利用正則 路徑驗證 字符串是否符合路徑的格式要求#url=xxxxxx.comurl = xiaoshuo_mulu[:re.search('.com',xiaoshuo_mulu).span()[1]]xiaoshuo_name = input('請輸入小說的名字:')get_xiaoshou_mulu(xiaoshuo_mulu,header)分析
下面展示一些 內聯代碼片。
# 利用requests的請求 模擬瀏覽器header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}在Google開發者找到代理信息:按F12,刷新即可查看
總結
以上是生活随笔為你收集整理的python爬取网站小说并下载实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lumerical官方案例、FDTD时域
- 下一篇: 小飞升值记——(13)