python采集漫客棧所有數(shù)據(jù),從此看漫不用money

前言

大家早好、午好、晚好吖 ? ~

環(huán)境使用:

  • Python 3.8

  • Pycharm

模塊使用:

  • requests >>> pip install requests 數(shù)據(jù)請求模塊

  • parsel >>> pip install parsel 數(shù)據(jù)解析模塊

基本思路流程: <通用的>

二. 代碼實(shí)現(xiàn)步驟

  • 獲取章節(jié)ID/章節(jié)名字/漫畫名字:

    1. 發(fā)送請求, 模擬瀏覽器對于url地址發(fā)送請求

      請求鏈接: 漫畫目錄頁url

    2. 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)

      開發(fā)者工具: response

    3. 解析數(shù)據(jù), 提取我們想要的數(shù)據(jù)內(nèi)容

      章節(jié)ID/章節(jié)名字/漫畫名字

      • 獲取漫畫圖片鏈接:
    4. 發(fā)送請求, 模擬瀏覽器對于url地址發(fā)送請求

      請求鏈接:

      image

    5. 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)

      開發(fā)者工具: response

    6. 解析數(shù)據(jù), 提取我們想要的數(shù)據(jù)內(nèi)容

      • 漫畫圖片鏈接
    7. 保存數(shù)據(jù)

代碼展示

導(dǎo)入模塊

# 導(dǎo)入數(shù)據(jù)請求模塊 --> 第三方模塊, 需要安裝 pip install requests
import requests
# 導(dǎo)入數(shù)據(jù)解析模塊 --> 第三方模塊, 需要安裝 pip install parsel
import parsel
# 導(dǎo)入文件操作模塊 --> 內(nèi)置模塊, 不需要安裝
import os

請求鏈接 <目錄頁url>

url = 'https://www.******.com/208707/'

偽裝模擬

headers = {
    # user-agent 用戶代理, 表示瀏覽器基本身份信息 Chrome 瀏覽器名字  101.0.0.0 瀏覽器版本  Windows 電腦系統(tǒng)
    '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 = requests.get(url=url, headers=headers)
# 把獲取下來html字符串?dāng)?shù)據(jù)內(nèi)容<response.text>, 轉(zhuǎn)換成可解析對象
selector = parsel.Selector(response.text)  # <Selector xpath=None data='<html>\n  <head>\n    <title>網(wǎng)游之近戰(zhàn)法師_網(wǎng)游...'>

提取漫畫名字

name = selector.css('.de-info__box .comic-title::text').get()

自動(dòng)創(chuàng)建文件夾 以漫畫名字作為文件夾名

file = f'{name}\\'
if not os.path.exists(file):
    os.mkdir(file)

第一次提取所有l(wèi)i標(biāo)簽, 返回是對象, 我不需要提取li標(biāo)簽里的內(nèi)容

lis = selector.css('.chapter__list .chapter__list-box .chapter__item')

如何一個(gè)一個(gè)提取列表當(dāng)中元素? for循環(huán)遍歷

for li in list(reversed(lis)):
    # 提取章節(jié)ID +為什么加的意思
    chapter_id = li.css('a::attr(data-chapterid)').get()
    # 提取章節(jié)名字
    chapter_title = li.css('a::text').getall()[-1].strip()

請求鏈接:

漫畫集合鏈接 --> f'{}' 字符串格式化方法, 相當(dāng)于, 把chapter_id傳入link這段字符串當(dāng)中

    link = f'https://comic.******.com/chapter/content/v1/?chapter_id={chapter_id}&comic_id=208707&format=1&quality=1&sign=5a5b72c44ad43f6611f1e46dd4d457bf&type=1&uid=61003965'

發(fā)送請求

    json_data = requests.get(url=link, headers=headers).json()
    num = 1
    print(chapter_title)

for循環(huán)遍歷, 一個(gè)一個(gè)提取列表元素

    for index in json_data['data']['page']:
        # 字典取值
        image = index['image']
        img_content = requests.get(url=image).content
        with open(file + chapter_title + str(num) + '.jpg', mode='wb') as f:
            f.write(img_content)
        num += 1
        print(image)

效果展示

尾語 ??

好了,今天的分享就差不多到這里了!

完整代碼、更多資源、疑惑解答直接點(diǎn)擊下方名片自取即可。

寧外給大家推薦一個(gè)好的教程:

【48小時(shí)搞定全套教程!你和大佬只有一步之遙【python教程】

有更多建議或問題可以評論區(qū)或私信我哦!一起加油努力叭(? ?_?)?

喜歡就關(guān)注一下博主,或點(diǎn)贊收藏評論一下我的文章叭?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容