不知從什麼時候開始.小說開始掀起了一股浪潮,它讓我們平日裡的生活不在枯燥乏
味,很多我們做不到的事情在小說裡都能輕易實現.
那麼話不多說,下面我們就來具體看看它是如何實現的吧??
這裡以一部小說為例,將每一章的內容爬取下來保存到本地.
??是我們要爬的小說目錄
爬取下來的數據:
分析網頁拿數據
首先利用requests庫的強大能力,向目標發起請求,拿到頁面中的所有HTML數據.
url(https://www.biduo.cc/biquge/40_40847/)
需要注意的是:請求太多次很容易被反爬,最好在請求時帶上請求頭(模擬浏覽器發請求),每個人
的浏覽器的請求頭都不同,不能直接使用我代碼中的請求頭,怎麼獲取自己的請求頭可按如下圖方
式拿到:
拿到所有HTML數據後,利用正則庫結合xpath語法(可以自己去學一下XPath教程)從中抽取章名和
每一章的鏈接,如下圖//*[@id=“list”]/dl/dd/a/text()和//*[@id=“list”]/dl/dd/a/@href即可拿到我們需
要的章節名稱和對應的鏈接地址:
現在已經拿到我們需要的章節名稱和對應每一章的鏈接地址了,這裡得到的每一章的鏈接地址還不
是一個完整的url地址,分析地址欄可知目標url(https://www.biduo.cc/biquge/40_40847/)與每一
章的鏈接地址拼接,即可得到我們最終所需的URL.
# 2. 請求文章拿到HTML數據,抽取文章內容並保存
得到最終URL後,層層遞進,相同的方法:向最終的URL地址發起請求得到小說內容頁的所有
HTML數據,再從中抽取我們需要的小說文字內容,並保存到本地以我們抽取到的章名來命名文
件:
# 2. 請求文章拿到HTML數據,抽取文章內容並保存
效果展示——
代碼展示——
import requests
from lxml import etree
url = "https://www.biduo.cc/biquge/40_40847/"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
}
class Spider(object):
def detail_request(self):
# 1. 請求目錄拿到HTML數據,抽取章名、章鏈接
response = requests.get(url,headers=headers)
# print(response.content.decode('gbk'))
html = etree.HTML(response.content.decode('gbk')) # 整理文檔對象
# print(html)
tit_list = html.xpath('//*[@id="list"]/dl/dd/a/text()')
url_list = html.xpath('//*[@id="list"]/dl/dd/a/@href')
print(tit_list,url_list)
for tit, src in zip(tit_list, url_list):
self.content_request(tit, src)
def content_request(self, tit, src):
# 2. 請求文章拿到HTML數據,抽取文章內容並保存
response = requests.get(url + src,headers=headers)
html = etree.HTML(response.content.decode('gbk')) # 整理文檔對象
content = "
".join(html.xpath('//*[@id="content"]/text()'))
file_name = tit + ".txt"
print("正在保存文件:{}".format(file_name))
with open(file_name, "a", encoding="utf-8") as f:
f.write(content)
spider = Spider()
spider.detail_request()
好啦!文章到這裡就正式結束,比起聽歌我還是更喜歡看小說的啦!
大家喜歡什麼項目可以評論區留言哦~
有問題或者需要視頻學習的可以找我溝通哈??
項目0.1【Python爬蟲系列】Python爬蟲入門並不難,甚至入門也很簡單(引言)項目0.2
項目0.3?Python爬蟲入門推薦案例:學會爬蟲_表情包手到擒來~
項目0.4【Tkinter界面化小程序】用Python做一款免費音樂下載器、無廣告無彈窗、清爽超流暢哦
項目0.5【Python爬蟲系列】淺嘗一下爬蟲40例實戰教程+源代碼【基礎+進階】
項目0.6【Python爬蟲實戰】使用Selenium爬某音樂歌曲及評論信息啦~
Python文章合集 | (入門到實戰、游戲、Turtle、案例等)
(文章匯總還有更多你案例等你來學習啦~源碼找我即可免費!)
先自我介紹一下,小編13年上師交大畢業,曾經在小公司待過,去過華為OPPO等大廠,18年進入阿裡,直到現在.深知大多數初中級java工程師,想要升技能,往往是需要自己摸索成長或是報班學習,但對於培訓機構動則近萬元的學費,著實壓力不小.自己不成體系的自學效率很低又漫長,而且容易碰到天花板技術停止不前.因此我收集了一份《java開發全套學習資料》送給大家,初衷也很簡單,就是希望幫助到想自學又不知道該從何學起的朋友,同時減輕大家的負擔.添加下方名片,即可獲取全套學習資料哦