今天我們爬取網頁中的文字,與上次的爬取網頁中的圖片相似,網頁的中的文字也是在網頁的源碼中(一般情況下)。
所以我們就以在某小說網站上爬取小說《聖墟》為例,使用爬蟲爬取網頁中的文本內容,並根據小說的章節名保存。
我們的思路如下:
1.爬取當前網頁的源碼:
2.提取出需要的數據(標題,正文)
3.保存(標題為文件名)
我們首先找到要爬取的網頁:https://www.nbiquge.com/0_89/15314.html,可以看到小說的標題和正文,這是本次爬取的目標。
首先分析網頁的編碼格式,可以看到該網站的編碼格式是”gbk“。
然后找到我們要爬取的信息在網頁中的位置:
標題,在網頁中右鍵點擊標題,點擊”檢查“,就可以看到標題在網頁中所處的位置。
正文:
在了解網站的編碼和標題正文的位置后,我們就可以編寫代碼來進行爬取了!
首先獲得網頁源碼,再對源碼進行分析,提取所要獲得的數據,最后保存為.txt文件。代碼如下:
import requests from bs4 import BeautifulSoup #網頁url url="https://www.nbiquge.com/0_89/15314.html"
#獲得網頁源碼 def getHtml(url): r=requests.get(url) r.encoding='gbk' return r.text
#獲得標題和正文內容 def getTxt(html): s=BeautifulSoup(html) title=s.find('div',{'class':'bookname'}).find('h1') text=s.find('div',{'id':'content'}) ls=[] ls.append(title.string) ls.append(str(text)) return ls
#保存 def saveTxt(ls): name=ls[0]+'.txt' fo=open(name,'w+',encoding='utf8') # ls[1] = ls[1].replace(" ", "") ls[1] = ls[1].replace("<br/>", "") fo.writelines(ls[1]) fo.close() h1=getHtml(url) h2=getTxt(h1) saveTxt(h2)
在Pycharm中運行代碼,該項目的文件夾中就會出現一個txt文件。
打開該txt文件,里面保存了小說的內容,其中標題為小說的章節名。
以上就是一個簡單的爬取小說的代碼了。這里還有其他的功能沒有展現出,比如爬取小說的更多章節並保存,如果是在起點中文網上該怎么操作(起點的網頁源碼沒有文章內容),這就需要我們進一步進行探索了。網頁的爬取是需要我們根據網頁的結構進行分析,然后編寫相應的代碼進行爬取的,在這個過程中會遇到很多的預料不到的情況,需要我們根據所學內容以及自己的查閱來解決問題。