日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python:50行代码实现下载小说,图片章节可自动识别转文字保存...

發(fā)布時間:2023/12/16 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python:50行代码实现下载小说,图片章节可自动识别转文字保存... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近有小伙伴吐槽,有些小說下載下來后發(fā)現(xiàn)是圖片章節(jié),白下載了,問我怎么處理?

這還不簡單,加個文字識別不就好了。

所以今天咱們來展示一下怎么將小說爬下來,再識別成文字保存。

話不多說,開搞!

一、準備工作

1、環(huán)境使用

Python 3.8 Pycharm

2、模塊使用

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解釋器?

  • 選擇file(文件) >>> setting(設置) >>> Project(項目) >>> python interpreter(python解釋器)
  • 點擊齒輪, 選擇add
  • 添加python安裝路徑
  • 5、pycharm如何安裝插件?

  • 選擇file(文件) >>> setting(設置) >>> Plugins(插件)
  • 點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
  • 選擇相應的插件點擊 install(安裝) 即可
  • 安裝成功之后 是會彈出 重啟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)容,被反爬了。

    # 目錄頁url地址 link = 'https://地址我先屏蔽了,不然不給過com/631781.html' # 請求頭參數(shù) ---> 在開發(fā)者工具復制粘貼的 # 復制這個替換掉上面地址中的中文 b.faloo 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]> 響應對象 html_data = requests.get(url=link, headers=headers).text# 目錄頁url地址 link = 'https://b.faloo.com/631781.html' # 請求頭參數(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]> 響應對象 html_data = requests.get(url=link, headers=headers).text # 轉(zhuǎn)成可解析對象 selector = parsel.Selector(html_data) # 獲取小說名字 name = selector.css('#novelName::text').get() # 獲取所有章節(jié)url地址 ---> .DivTd a 還是定位標簽 attr(href) 獲取標簽里面href屬性 href = selector.css('.DivTd a::attr(href)').getall()[58:100]

    獲取數(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

    # 轉(zhuǎn)成可解析對象 selector = parsel.Selector(response.text) # 提取小說章節(jié)標題 --> .nr_center .c_left .c_l_title h1 css語法用于定位標簽 ::text 獲取標簽文本內(nèi)容 title = selector.css('.nr_center .c_left .c_l_title h1::text').get() # 提取小說內(nèi)容 --> 獲取所有 getall content_list = selector.css('div.noveContent p::text').getall() if len(content_list) != 0:# 保存文本數(shù)據(jù), 保存字符串數(shù)據(jù)類型 需要把列表轉(zhuǎn)成字符串 str(content_list)強制轉(zhuǎn)換content = '\n'.join(content_list) # 用\n (換行符) 把 content_list (列表) 合并成一個字符串數(shù)據(jù)

    保存數(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。