天天看點

使用python爬蟲爬取愛看的小說使用python爬蟲爬取愛看的小說

使用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()