一定要会的Python爬虫技能,搜索名字即可下载全文小说?
前言
? ? ? ? ? hello,大家好久不見了哈,不知道有沒有想U(xiǎn)P啊。最近呢由于個(gè)人原因?qū)е聸]有時(shí)間來(lái)給大家分享新的案例教程了,所以抱歉各位哈,現(xiàn)在問(wèn)題都解決了,會(huì)堅(jiān)持每天更新的,希望大家能喜歡.
? ? ? ? 那么今天分享給大家的案例是啥呢,那就是通過(guò)短短二十行代碼來(lái)實(shí)現(xiàn)輸入小說(shuō)名字就可以下載文本的這樣一個(gè)爬蟲案例,相對(duì)來(lái)講還是非常簡(jiǎn)單的,能讓大家好好的上手,接下來(lái)就跟著up的思路一起來(lái)實(shí)現(xiàn)這樣的一個(gè)功能吧
項(xiàng)目分析
小編以前是很愛看小說(shuō),就目前的幾年來(lái)講我基本沒有看過(guò)小說(shuō)了,也不知道哪些網(wǎng)站能爬,所以就隨便找了一個(gè)。、我們首先來(lái)到網(wǎng)站的小說(shuō)top榜查看一下網(wǎng)頁(yè)源代碼
?
還是可以清楚的看到top榜里的小說(shuō)全都在<li>標(biāo)簽中這就為我們的爬蟲帶來(lái)了很大的便利,只需要獲取每個(gè)li標(biāo)簽里的內(nèi)容就可以完成。
加下來(lái)我們找找文件在哪里下載,我們繼續(xù)點(diǎn)擊斗破蒼穹來(lái)到下面的頁(yè)面,為啥選擇斗破這本小說(shuō),那是因?yàn)檫@個(gè)是up人生中第一本看完結(jié)的小說(shuō),也是印象最為深刻的小說(shuō)。不知道大家有沒有同感的,記得那時(shí)候等更新可是很難等的。
?我們繼續(xù)點(diǎn)擊進(jìn)去看到了文件的下載鏈接,為了能夠使爬蟲的代碼更加簡(jiǎn)單我們來(lái)看看這個(gè)鏈接和之前l(fā)i標(biāo)簽里的小說(shuō)鏈接有什么不同
?
?
可以看到他們有相同的一串編號(hào),這樣我們只需要獲取每個(gè)小說(shuō)的編號(hào)就能獲得所有小說(shuō)的下載鏈接了,下面我們來(lái)完善我們的代碼。
代碼編寫
這個(gè)項(xiàng)目我們需要的庫(kù)有requests庫(kù),BeautifulSoup庫(kù)
經(jīng)過(guò)上面的思路整理我們先建立起我們的爬蟲框架:
?
我畫了個(gè)流程圖來(lái)讓大家更好的理解我們的結(jié)構(gòu)?
?
?
好我們看看每個(gè)部分的代碼是什么:
網(wǎng)頁(yè)請(qǐng)求的代碼幾乎是通用的沒次爬蟲都可以原封不動(dòng)的復(fù)制粘貼(這個(gè)代碼無(wú)法解決反爬)
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('訪問(wèn)失敗')下面是獲取頁(yè)面每個(gè)小說(shuō)的信息并構(gòu)造下載鏈接
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下面是文件保存的函數(shù)
def savetxt(down_list):root='D:\\小說(shuō)\\'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接下來(lái)是主函數(shù)
def main():url='https://www.555x.org/top.html'html=getHTMLtext(url)down_list = []parseHTMLtext(html,down_list)savetxt(down_list)print('下載成功')pass好這就是我們的代碼框架我們來(lái)看看這個(gè)代碼爬蟲的小效果如何:
?
這些小說(shuō)看過(guò)了的應(yīng)該孩子都打醬油了吧
?
可以看到效果還是不錯(cuò)的!!
好了這就是這期的全部?jī)?nèi)容希望大家能夠自己敲代碼嘗試一下,我也是python爬蟲里的一只小白,代碼可能并不完善但還是希望得到大家的支持,以后我也會(huì)推出更多的文章來(lái)一起學(xué)習(xí)!!
下期我們將給大家分享如何爬取網(wǎng)頁(yè)圖片,大家可以關(guān)注一下喲!!!
最后給大家獻(xiàn)上完整代碼想看立即看小說(shuō)的可以直接復(fù)制粘貼:
import requests from bs4 import BeautifulSoup# 網(wǎng)頁(yè)請(qǐng)求 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('訪問(wèn)失敗')# 網(wǎng)頁(yè)內(nèi)容解析 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:\\小說(shuō)\\'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# 主函數(shù) def main():url='https://www.555x.org/top.html'html=getHTMLtext(url)down_list = []parseHTMLtext(html,down_list)savetxt(down_list)print('下載成功')passmain()?源代碼都貼了,還可以進(jìn)一步的優(yōu)化,但是考慮到大家的水平都是不一樣的,所以今天這篇就到這里為止吧,對(duì)了可以關(guān)注一下下方的公眾號(hào)哈。有不懂的問(wèn)題歡迎留言。咱們下一篇見
?
?
總結(jié)
以上是生活随笔為你收集整理的一定要会的Python爬虫技能,搜索名字即可下载全文小说?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ADF11g-041:禁止或允许其它网站
- 下一篇: vue项目中样式重置 自动注入less