程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

一定要會的Python爬蟲技能,搜索名字即可下載全文小說?

編輯: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_encoding
return r.text
except:
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.string
down_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]).content
print(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_encoding
return r.text
except:
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.string
down_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]).content
print(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
main()

 源代碼都貼了,還可以進一步的優化,但是考慮到大家的水平都是不一樣的,所以今天這篇就到這裡為止吧,對了可以關注一下下方的公眾號哈。有不懂的問題歡迎留言。咱們下一篇見

 

 


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved