爬取網路小說最細緻的詳解

2021-09-26 09:33:29 字數 2422 閱讀 1372

from bs4 import beautifulsoup#匯入beautifulsoup這個模組爬蟲中很關鍵在第二篇中講

import requests

#我們大概分三個步驟

#1.獲取章節和章節對應的鏈結資訊

#2.獲取對應章節的內容

#3.把章節名字已經對應章節的內容寫進text檔案裡面

class spiderstory(object):

def __init__(self):

self.url = ''

self.names = #存放章節名稱

self.hrefs = #存放章節鏈結

def get_urlandname(self):

response = requests.get(url=self.url + 'list.aspx?novelid=6686 ')#回去章節目錄型別為req_parser = beautifulsoup(response.text,"html.parser")

# req後面跟text和html都行,固定寫法,beautifulsoup預設支援python的標準html解析庫資料型別:# print(req_parser)

# print(type(req_parser))

div = req_parser.find_all('div',class_='user-catalog-ul-li')

# 查詢內容,標籤為div,屬性為class='user-catalog-ul-li',這裡 是找到名字和鏈結所在的標籤,資料型別:# print(div)

# print(type(div))

a_bf = beautifulsoup(str(div))#進行進一步的字元解析因為獲取要素型別的值時必須進行這一步

# print(type(a_bf))## print(len(a_bf))#1

a = a_bf.find_all('a') # # 查詢內容,標籤為a#下面需要獲取a標籤下的href,所以這裡首先要精確到a標籤下。才能從a標籤下獲取屬性的值

# print(len(a))

# print(a)

for i in a:#注意class型別和列表等一樣也是乙個乙個元素的,所以他可以用for遍歷,你可以用len檢視一下

#print(i.find('span',class_='fl').string)#查詢所有span和屬性class='fi'的字元型別的內容,注意因為class和類一樣了所寫成class_

# print(i)

# print(i['href'])

# print(type(i))

# print(len(i))

# print(i.find('span',class_='fl'))

#print(i.get('href'))#獲取有兩種方法:1.i.get('href' 2.i['href']

print(self.names)

print(self.hrefs)

def get_text(self,url):

# print(self.hrefs[0])

respons2 =requests.get(url=url)

# print(respons2)

c = beautifulsoup(str(respons2.text),'html.parser')

# print(c)

b = c.find_all('p', class_='p-content')

text =

for temp in b:#獲取標籤裡面的文字只能進行遍歷每個滿足條件的文字才能獲取

#b.string#獲取解析後的文字,獲取所有的文字型別

print(text)

return text

def writer(self,name,path,text1):

''' 寫入txt文件'''

with open(path,'a',encoding='utf-8') as f:

f.write(name + '\n')#寫入名字並換行

f.writelines(text1)#追加內容

f.write('\n\n')#換兩行

if __name__ == "__main__": # 執行入口

a= spiderstory()

a.get_urlandname()

# a.get_text()

for i in range(len(a.names)):

name = a.names[i]

text = str(a.get_text(a.hrefs[i]))#注意typeerror: write() argument must be str, not none,寫入文件必須是字串

a.writer(name,'f:\**.txt',text)

print(a)

python爬蟲爬取網路小說

首先,獲取html頁面並解析,為方便儲存和使用頁面的encoding,直接使用全域性變數 章節名章節名 章節名.從結構可以看出,可以先獲取目錄的頂層標籤 class box 的標籤 然後再獲取該標籤內所有的li標籤即可。由於頁面內有其他的class box 的標籤,因此本次使用soup.find s...

Python爬蟲爬取網路小說

太古神王 txt a encoding utf 8 errors ignore i 1while i 2062 single web web file.readline replace n url single web print url header data requests.get url u...

利用Python爬取網路小說(基礎)

1.通過requests庫獲取網頁內容 2.通過beautifulsoup庫解析網頁內容 3.在 原始碼裡找到要爬取的內容 4.成功 ps 建議還是學一部分網頁知識之後再來學爬蟲更好理解一些 import requests import bs4 from bs4 import beautifulso...