一定要会的Python爬虫技能,搜索名字即可下载全文小说?
前言
? ? ? ? ? hello,大家好久不見了哈,不知道有沒有想UP啊。最近呢由于個人原因導致沒有時間來給大家分享新的案例教程了,所以抱歉各位哈,現在問題都解決了,會堅持每天更新的,希望大家能喜歡.
? ? ? ? 那么今天分享給大家的案例是啥呢,那就是通過短短二十行代碼來實現輸入小說名字就可以下載文本的這樣一個爬蟲案例,相對來講還是非常簡單的,能讓大家好好的上手,接下來就跟著up的思路一起來實現這樣的一個功能吧
項目分析
小編以前是很愛看小說,就目前的幾年來講我基本沒有看過小說了,也不知道哪些網站能爬,所以就隨便找了一個。、我們首先來到網站的小說top榜查看一下網頁源代碼
?
還是可以清楚的看到top榜里的小說全都在<li>標簽中這就為我們的爬蟲帶來了很大的便利,只需要獲取每個li標簽里的內容就可以完成。
加下來我們找找文件在哪里下載,我們繼續點擊斗破蒼穹來到下面的頁面,為啥選擇斗破這本小說,那是因為這個是up人生中第一本看完結的小說,也是印象最為深刻的小說。不知道大家有沒有同感的,記得那時候等更新可是很難等的。
?我們繼續點擊進去看到了文件的下載鏈接,為了能夠使爬蟲的代碼更加簡單我們來看看這個鏈接和之前li標簽里的小說鏈接有什么不同
?
?
可以看到他們有相同的一串編號,這樣我們只需要獲取每個小說的編號就能獲得所有小說的下載鏈接了,下面我們來完善我們的代碼。
代碼編寫
這個項目我們需要的庫有requests庫,BeautifulSoup庫
經過上面的思路整理我們先建立起我們的爬蟲框架:
?
我畫了個流程圖來讓大家更好的理解我們的結構?
?
?
好我們看看每個部分的代碼是什么:
網頁請求的代碼幾乎是通用的沒次爬蟲都可以原封不動的復制粘貼(這個代碼無法解決反爬)
def getHTMLtext(url):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"}try:r = requests.get(url=url, headers=headers)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:print('訪問失敗')下面是獲取頁面每個小說的信息并構造下載鏈接
def parseHTMLtext(html,down_list):soup=BeautifulSoup(html,'html.parser')li_list=soup.find('div',class_='chu').find_all('li')for li in li_list:li_url=li.find('a').attrs['href']li_url='https://www.555x.org/home/down/txt/id/'+li_url[-10:-5:1]name=li.a.stringdown_list.append([li_url,name])pass下面是文件保存的函數
def savetxt(down_list):root='D:\\小說\\'for down in down_list:path=root+down[1]+'.txt'txt=requests.get(down[0]).contentprint(down[0])with open(path,'wb') as f:f.write(txt)f.close()pass接下來是主函數
def main():url='https://www.555x.org/top.html'html=getHTMLtext(url)down_list = []parseHTMLtext(html,down_list)savetxt(down_list)print('下載成功')pass好這就是我們的代碼框架我們來看看這個代碼爬蟲的小效果如何:
?
這些小說看過了的應該孩子都打醬油了吧
?
可以看到效果還是不錯的!!
好了這就是這期的全部內容希望大家能夠自己敲代碼嘗試一下,我也是python爬蟲里的一只小白,代碼可能并不完善但還是希望得到大家的支持,以后我也會推出更多的文章來一起學習!!
下期我們將給大家分享如何爬取網頁圖片,大家可以關注一下喲!!!
最后給大家獻上完整代碼想看立即看小說的可以直接復制粘貼:
import requests from bs4 import BeautifulSoup# 網頁請求 def getHTMLtext(url):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"}try:r = requests.get(url=url, headers=headers)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:print('訪問失敗')# 網頁內容解析 def parseHTMLtext(html,down_list):soup=BeautifulSoup(html,'html.parser')li_list=soup.find('div',class_='chu').find_all('li')for li in li_list:li_url=li.find('a').attrs['href']li_url='https://www.555x.org/home/down/txt/id/'+li_url[-10:-5:1]name=li.a.stringdown_list.append([li_url,name])pass# 文件保存 def savetxt(down_list):root='D:\\小說\\'for down in down_list:path=root+down[1]+'.txt'txt=requests.get(down[0]).contentprint(down[0])with open(path,'wb') as f:f.write(txt)f.close()pass# 主函數 def main():url='https://www.555x.org/top.html'html=getHTMLtext(url)down_list = []parseHTMLtext(html,down_list)savetxt(down_list)print('下載成功')passmain()?源代碼都貼了,還可以進一步的優化,但是考慮到大家的水平都是不一樣的,所以今天這篇就到這里為止吧,對了可以關注一下下方的公眾號哈。有不懂的問題歡迎留言。咱們下一篇見
?
?
總結
以上是生活随笔為你收集整理的一定要会的Python爬虫技能,搜索名字即可下载全文小说?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ADF11g-041:禁止或允许其它网站
- 下一篇: Python爬取wfxnews 小说网站