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...