python 爬漫畫 小白學習過程

2021-09-25 09:54:10 字數 3112 閱讀 2788

近幾年,雲計算、大資料和人工智慧加上5g的到來,感覺還是要順應時代的發展學習一下python來防防身。

興趣是學習最好的老師,也是最大的動力,基於本人有時候會獵奇一下漫畫,但是看到一半網路不給力的時候,看得特別不爽。

所以我就以這個為切入點去學習。

那麼廢話不多說

import urllib.request

import re

import requests

import os

#source_html = (input('輸入漫畫目錄**:'))

source_html = source_html.replace(' ','')

#考慮到我看挺多漫畫的,逐個在**裡改比較麻煩,所以後來用input代替

#這裡的source_html也用來補全data-chapterid(530643)用到

print('source_html的資料:',source_html)

print('source_html資料型別:',type(source_html))

#python3.x 中 input() 函式接受乙個標準輸入資料,返回為 string 型別。

print ('********************====')#分割線

html = source_html

#把source_html的資料賦值給變數html

print ('html = source_html的資料:',html)

print('html資料型別:',type(html))

print ('********************====')#分割線

html = urllib.request.urlopen(html)

#得到的資料是,http.客戶端.http響應物件位於0x000001908c95a3c8?httpresposne型別的物件? 這個沒搞懂

print ('html = urllib.request.urlopen(html)的資料:',html)

print('urllib.request.urlopen(html).read()後的資料型別:',type(html))

print ('********************====')#分割線

html = html.read()

#response.read()就可以得到返回的網頁內容

print ('html = html.read()的資料:',html)

print('html.read()後的資料型別:',type(html))

print ('********************====')#分割線

html = html.decode('utf-8')

#前面得到的資料型別是bytes,需要在轉為utf-8

#bytes才是計算機裡真正的資料型別,也是網路資料傳輸中唯一的資料格式

#bytes的資料與字串型別資料的轉換就是編碼與解碼的轉換,utf-8是編譯碼時指定的格式。

print('轉格式後的html的資料型別:',type(html))

#一擊男出張版

reg = r'data-chapterid="(.*?)">(.*?)' #建立正規表示式,來匹配到章節名稱與對應的data-chapterid(530643)

#簡單來說章節 :一擊男出張版 對應的連線是 + 530643

reg = re.compile(reg,re.s) #用compile函式生成乙個正規表示式(pattern)物件

urls = re.findall(reg,html) #使用findall()在字串中找到正規表示式所匹配的所有子串

#這裡是返回所有章節及對應的data-chapterid,然後生成乙個列表

urls.reverse()#因為生成的列表是倒序的,所以這裡要把列表反向排序

#下面開始加快速度

for url in urls:#用for迴圈,使得變數url 遍歷列表urls

print (url)#列印元組url遍歷到列表urls的資料

print (type(url))

href_url = url[0] #把元組中的值賦值給href_url

href_url = source_html + href_url #把source_html 與 href_url 拼接起來 得到完整的url

print (href_url)

print (type(href_url))

title_url = url[1]#把元組中的值賦值給title_url

title_url = title_url.replace('\n','')

title_url = title_url.replace(' ','')

title_url = title_url.replace('', '')

#把匹配到的不需要的資料進行刪除

print (title_url)

print (type(title_url))

chapter_html = urllib.request.urlopen(href_url).read()

chapter_html = chapter_html.decode('utf-8')

chapter_reg = r'

else:

os.mkdir(file)

print('mkdir file')

#用章節名稱建立資料夾,並檢測資料夾是否存在,若不存在則建立

n1 = title_url + '/' + str(pic_num)

#建立存放路徑

#這裡是儲存

# print(html)

# print(urls)

當自己想分享出來的時候,想到自己作為乙個小白去查資料學習的過程曲折道路,就想盡可能寫給一些初學者也能看的懂,回去查了一下各個**的含義。結果發現自己僅僅只是初步會用而已,離理解還差得很有遠,好慚愧啊。

作為小白的理解,可以會誤導初學者,有大佬發現什麼問題,請用力噴我即可。

記錄小白學習python爬蟲的過程(二)

正規表示式 h表示以h開頭,表示任意字元,表示任意多次import re line hello 123 h表示以h開頭,表示任意字元,表示任意多次 re str h.if re.match re str,line print 匹配成功 輸出 匹配成功 表示結尾字元import re line hel...

小白學習python

super的用法 自己學習使用 可能有借鑑。super用於在子類中通過不改變父類呼叫父類方法,例如 init 如果父類中有 init 方法 子類中也含有此方法 需要呼叫父類方法時要使用super 方法。class animal def init self self.name animal self....

git小白學習過程 1

初學git,挑自己不會的簡單做個筆記和記錄方便以後查閱和複習 一.git 的簡單構成 個人理解 在大的方向上有遠端庫和本地庫,本地庫簡單來說就是在自己的電腦上建立的進行管理的庫,遠端庫是將檔案傳輸的伺服器上所建立的對應的庫,最熟悉的就是github。電腦上的內容到本地庫需要經過三個區域,分別是工作區...