Python學習筆記,爬取筆趣閣小說
阿新 • • 發佈:2021-07-20
程式碼來源:Python爬取筆趣閣小說,有趣又實用
學習了基礎的語法,然後網上看到有人分享利用python爬取小說,自己拷貝了程式碼嘗試了一下。
1. 環境準備 安裝BeautifulSoup4 和lxml
& C:/Python39/python.exe -m pip install --user BeautifulSoup4 & C:/Python39/python.exe -m pip install --user lxml
2. 重新命名了下載後的檔名便於排序也防止有非法的字元出現無法建立檔案,加了1秒的間隔
import os import requests importtime from bs4 import BeautifulSoup # 宣告請求頭 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36' } # 建立儲存小說文字的資料夾 if not os.path.exists('./小說'): os.mkdir('./小說/') path = 'http://www.biquw.com/book/416/' # 訪問網站並獲取頁面資料 response = requests.get(path) response.encoding= response.apparent_encoding # print(response.text) ''' 根據上圖所示,資料是儲存在a標籤當中的。a的父標籤為li,li的父標籤為ul標籤,ul標籤之上為div標籤。 所以如果想要獲取整個頁面的小說章節資料,那麼需要先獲取div標籤。並且div標籤中包含了class屬性, 我們可以通過class屬性獲取指定的div標籤,詳情看程式碼~ ''' # lxml: html解析庫 將html程式碼轉成python物件,python可以對html程式碼進行控制 soup = BeautifulSoup(response.text, 'lxml') book_list = soup.find('div', class_='book_list').find_all('a') # soup物件獲取批量資料後返回的是一個列表,我們可以對列表進行迭代提取 count = 1; for book in book_list: book_name = book.text # 獲取到列表資料之後,需要獲取文章詳情頁的連結,連結在a標籤的href屬性中 book_url = book['href'] book_info_html = requests.get(path + book_url, headers=headers) book_info_html.encoding = book_info_html.apparent_encoding soup_part = BeautifulSoup(book_info_html.text, 'lxml') info = soup_part.find('div', id='htmlContent') name = str(count) # print(info.text) with open('./小說/' + name.zfill(4) + '.txt', 'a', encoding='utf-8') as f: f.write(info.text) print('{} 下載完成!'.format(book_name)) count += 1 time.sleep(1)