使用python爬蟲爬取愛看的小說
平時在看小說的時,由于網絡原因導緻每次加載下一章會等很長時間,為了能夠連貫的看完整本小說,可以預先使用爬蟲将整本小說存到手機裡。
ps 本代碼沒有對小說進行排版(因為懶得做)
# 1.擷取小說網頁的内容
# 2.将網頁内容中的小說内容存到text中
import re
import requests
from bs4 import BeautifulSoup
def get_html(url): # 擷取網頁的html檔案,傳回的是text
try:
r = requests.get(url) # 使用requests包傳回一個response對象r
r.raise_for_status() # 顯示網頁的狀态碼
r.encoding = r.apparent_encoding # 将文章編碼形式改變為網頁内容的編碼形式
return r.text
except:
return ''
def save_book(html):
soup = BeautifulSoup(html, 'html.parser') # 對得到的html檔案進行解析
string = soup.find_all(id="nr1") # 查找所有屬性值中id為nrl的标簽
with open('book.txt', 'a', encoding='utf-8') as b:
b.write(string[0].get_text()) # 擷取标簽的内容,将内容存入到book.txt檔案當中
print('一章已存入')
def find_next(html):
soup = BeautifulSoup(html, 'html.parser')
string = soup.find_all(id="pb_next") # 查找所有屬性值中id為pb_next的标簽
return string[0].attrs['href'] # 擷取标簽屬性,并且将屬性為href的值取出來備用
def main():
url = 'https://m.mkxs8.com' # 網站的網址
next_url = '/289/289712/66196396.html' # 對于小說頁面的網址
html = get_html(url+next_url) # 小說每個章節的網址使用get_html方法擷取html檔案
save_book(html)
next_url = find_next(html)
while next_url != '/289/289712/': # 檢視是否是最後一章,如果是最後一章,停止循環
html = get_html(url+next_url)
save_book(html)
next_url = find_next(html)
main()