Python:50行代码实现下载小说,图片章节可自动识别转文字保存...
最近有小伙伴吐槽,有些小說下載下來后發(fā)現(xiàn)是圖片章節(jié),白下載了,問我怎么處理?
這還不簡單,加個文字識別不就好了。
所以今天咱們來展示一下怎么將小說爬下來,再識別成文字保存。
話不多說,開搞!
一、準備工作
1、環(huán)境使用
Python 3.8 Pycharm2、模塊使用
requests >>> 數(shù)據(jù)請求模塊 parsel >>> 數(shù)據(jù)解析模塊 re 正則表達式requests 是第三方模塊,需要手動安裝,在CMD里面進行安裝 輸入安裝命令 pip install 模塊名。如果平時下載模塊慢,可以切換國內(nèi)鏡像源。
3、模塊安裝問題
安裝python第三方模塊最快捷的有兩種方法
第一種: win + R 輸入 cmd 點擊確定,輸入安裝命令 pip install 模塊名 (pip install requests) 回車。
第二種: 在pycharm中點擊Terminal(終端) 輸入安裝命令
安裝失敗原因
失敗一
pip 不是內(nèi)部命令
解決方法: 設置環(huán)境變量
失敗二
出現(xiàn)大量報紅 (read time out)
解決方法: 因為是網(wǎng)絡鏈接超時, 需要切換鏡像源。
清華:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:https://mirrors.aliyun.com/pypi/simple/ 中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/ 華中理工大學:https://pypi.hustunique.com/ 山東理工大學:https://pypi.sdutlinux.org/ 豆瓣:https://pypi.douban.com/simple/例如:pip install -i https://pypi.doubanio.com/simple/ 模塊名
失敗三
cmd里面顯示已經(jīng)安裝過了, 或者安裝成功了, 但是在pycharm里面還是無法導入。
解決方法: 可能安裝了多個python版本 (anaconda 或者 python 安裝一個即可) 卸載一個就好,或者你pycharm里面python解釋器沒有設置好。
4、如何配置pycharm里面的python解釋器?
5、pycharm如何安裝插件?
二、案例思路/基本流程
1、分析我們想要數(shù)據(jù)內(nèi)容來自于哪里
F12 開發(fā)者工具進行抓包分析,打開 F12 或者 鼠標右鍵點擊檢查 刷新網(wǎng)頁,點擊搜索按鈕,輸入搜索內(nèi)容,點擊回車找到數(shù)據(jù)包。
請求 https://b.faloo.com/631781_1.html 這個網(wǎng)址, 就可以得到我們想要小說內(nèi)容。
2、代碼實現(xiàn)步驟
- 發(fā)送請求, 模擬瀏覽器對于 https://b.faloo.com/631781_1.html 發(fā)送請求
- 獲取數(shù)據(jù), 獲取服務器返回響應數(shù)據(jù) —> 開發(fā)者工具里面response
- 解析數(shù)據(jù),提取我們想要數(shù)據(jù)內(nèi)容,小說章節(jié)名字
- 保存數(shù)據(jù),保存本地文件。
3、代碼展示
模塊導入
# 導入數(shù)據(jù)請求模塊 import requests # 導入數(shù)據(jù)解析模塊 import parsel # 導入獲取VIP章節(jié)代碼 import Vip # 導入圖片文字識別代碼 import spot # 導入os模塊 import os發(fā)送請求
模擬瀏覽器對于 https://b.faloo.com/631781_1.html 發(fā)送請求
為什么使用的是 requests.get ?
根據(jù)開發(fā)者工具里面所看到請求方式, 瀏覽器是什么請求方式, 我們代碼當中就使用什么請求方式
爬蟲代碼要偽裝成瀏覽器發(fā)送請求
添加headers請求,你不加請求頭, 不偽裝, 你就會被識別出來你是爬蟲程序, 從而得到你想要的內(nèi)容,被反爬了。
獲取數(shù)據(jù)
獲取服務器返回響應數(shù)據(jù) —> 開發(fā)者工具里面 response 響應文本數(shù)據(jù) print(response.text)
for index in href:# 確定請求鏈接url = f'https:{index}'# 請求頭參數(shù) ---> 在開發(fā)者工具復制粘貼的headers = {# User-Agent 表示瀏覽器基本身份信息'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'}# 發(fā)送請求 ---> <Response [200]> 響應對象response = requests.get(url=url, headers=headers)解析數(shù)據(jù)
提取我們想要數(shù)據(jù)內(nèi)容, 小說 小說章節(jié)名字
撤回 ctrl + z
得到的 response.text 響應文本數(shù)據(jù) 字符串數(shù)據(jù)類型 需要轉(zhuǎn)換一下數(shù)據(jù)類型
解析方法: css選擇器 —> 根據(jù)標簽屬性內(nèi)容提取數(shù)據(jù)
css語法不會, 沒有關系, 只要你會 ctrl + c / v
保存數(shù)據(jù), 保存本地文件
# 打開文件 進行保存with open(name + '.txt', mode='a', encoding='utf-8') as f:# 寫入數(shù)據(jù)f.write(title)f.write('\n')f.write(content)f.write('\n')print('成功保存: ',title)else:img_content = Vip.get_vip_img(link=url)with open('img\\' + title + '.png', mode='wb') as img_f:img_f.write(img_content)print('成功保存: ',title)圖片文字識別,返回文字內(nèi)容
files = os.listdir('img\\') for file in files:img_file = 'img\\' + filenovel_title = file.replace('.png', '')novel_content = spot.get_vip_content(file=img_file)with open(name + '.txt', mode='a', encoding='utf-8') as f:# 寫入數(shù)據(jù)f.write(novel_title)f.write('\n')f.write(novel_content)f.write('\n')好了,今天的分享就到這里,全部代碼下方名片獲取。
最后推薦一套Python教程, 涵蓋了常見的大部分案例實戰(zhàn),非常詳細~
代碼總是學完就忘記?100個爬蟲實戰(zhàn)項目!讓你沉迷學習丨學以致用丨下一個Python大神就是你!
總結
以上是生活随笔為你收集整理的Python:50行代码实现下载小说,图片章节可自动识别转文字保存...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Moebius集群
- 下一篇: python布尔值print_pytho