日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫爬取《斗破苍穹》小说全文

發(fā)布時間:2023/12/14 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫爬取《斗破苍穹》小说全文 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

網(wǎng)絡(luò)爬蟲的入門學(xué)習(xí):python爬蟲爬取小說全文

  • python爬蟲首先導(dǎo)入基本爬蟲庫requests:import requests,安裝命令pip install requests,使用pycharm可以直接在settings中下載
  • 導(dǎo)入解析HTML標(biāo)簽的python庫bs4,同樣需要下載,pip install bs4,也可以直接在pycharm的settings中下載,其實在解析HTML代碼中只需要導(dǎo)入BeautifulSoup類就可以實現(xiàn)相應(yīng)功能,代碼為from bs4 import BeautifulSoup
  • 要永久保存說就需要用到和文件相關(guān)的庫os
    import os
  • 首先需要創(chuàng)建相應(yīng)文件來保存小說
  • if not os.path.exists('D:/斗破蒼穹'):os.mkdir('D:/斗破蒼穹')###創(chuàng)建目錄
  • 設(shè)置url,偽裝UA(User-Agent)
  • url1='https://www.rmxs8.com/10121/' url2='https://www.rmxs8.com/10121_2/' headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' }#使用字典中的鍵值對來替換原本的User-Agent #原小說有兩個網(wǎng)址存放的都是斗破蒼穹的目錄所以需要設(shè)置兩個url
  • 對網(wǎng)頁發(fā)起請求得到一個response對象
  • response1=requests.get(url=url1,headers=headers) response2=requests.get(url=url2,headers=headers)
  • 分析網(wǎng)頁HTML標(biāo)簽,打開網(wǎng)頁抓包工具,進入網(wǎng)頁點擊鼠標(biāo)右鍵,點擊檢查,就會出現(xiàn)如圖右側(cè):
    觀察HTML標(biāo)簽可以看出小說目錄名都在 <div class=novel_list id=novel10121>的標(biāo)簽內(nèi)的<a href="網(wǎng)址">章節(jié)標(biāo)題</a>中,我們需要從HTML代碼中提取出每一章的標(biāo)題并且通過a標(biāo)簽中的網(wǎng)址進入詳情頁提取出章節(jié)內(nèi)容,這時就需要用到bs4庫中的BeautifulSoup類
  • text1=response1.text#返回網(wǎng)頁1HTML代碼 text2=response2.text#...網(wǎng)頁2html... soup1=BeautifulSoup(text1,'lxml') soup2=BeautifulSoup(text2,'lxml') #BeautifulSoup需要傳入兩個參數(shù),一個是HTML代碼,另一個則是需 #要采用的HTML解析器,除了lxml以外還可以使用html.parser(自帶 #解析器),而lxml需要下載lxml庫 a_list1=soup1.select('#novel10121.novel_list a') a_list2=soup2.select('#novel10121.novel_list a') #select方法的層級選擇器,.代表類選擇器,#代表id選擇器,而我們 #需要爬取的小說內(nèi)容在該類和id的<a>標(biāo)簽中,空格' '代表跳級選擇 #下一級的選擇需要通過'>'符號來選擇,例如select(#novel10121 # > li)就代表id=novel10121的下一級的li標(biāo)簽 a_list=a_list1+a_list2 #將所有的a標(biāo)簽都存入a_list列表中,方便后面的遍歷
  • 遍歷剛才得到的所有a標(biāo)簽,每一章節(jié)的標(biāo)題都在a標(biāo)簽中,只需要遍歷列表,取出每一章節(jié)的名字,創(chuàng)建txt文件保存,并且得到詳情頁的網(wǎng)址,進行訪問得到小說的內(nèi)容保存至文件中
  • for a in a_list:chapter_title=a.string#string可以獲取<a>標(biāo)簽里的文本內(nèi)容chapter_url=a['href']#觀察可得網(wǎng)址總是在<a>標(biāo)簽的href中,將其中網(wǎng)址取出即可chapter_response=resquests.get(url=chapter_url,headers=headers)#獲取詳情頁的響應(yīng)對象chapter_soup=Beautiful(chapter_response.text,'lxml')#再次用bs4來解析新獲得的HTML標(biāo)簽chapter_content=chapter_soup.find('div',class_='content').text#進入詳情頁同樣通過抓包工具發(fā)現(xiàn)小說內(nèi)容都在.content之下只要取出這個div下的所有文本信息就可以完成提取。with open('D:/斗破蒼穹/'+chapter_title+'.txt','w',encoding='utf-8') as fp:fp.write(chapter_content)#將提取的小說內(nèi)容保存至文件中fp.close()#關(guān)閉文件(其實不管也行)chapter_response.close()#切斷與當(dāng)前網(wǎng)址的聯(lián)系,否則由于程序過于頻繁的訪問網(wǎng)站可能會讓網(wǎng)站誤以為是攻擊行為從而切斷聯(lián)系

    總結(jié):以上是所有的步驟,下面是完整的代碼,有興趣的小伙伴可以直接復(fù)制粘貼運行(但是要確保所有有需要的庫的下載完畢,否則會報一堆錯<#-#>)

    import requests import os from bs4 import BeautifulSoup if not os.path.exists('D:/斗破蒼穹'):os.mkdir('D:/斗破蒼穹') url='https://www.rmxs8.com/10121/' headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } response1=requests.get(url=url,headers=headers) response2=requests.get(url='https://www.rmxs8.com/10121_2/') page_text1=response1.text page_text2=response2.text soup1=BeautifulSoup(page_text1,'lxml') soup2=BeautifulSoup(page_text2,'lxml') a_list1=soup1.select('#novel10121.novel_list a') a_list2=soup2.select('#novel10121.novel_list a') a_list=a_list1+a_list2 for a in a_list:chapter_title=a.stringif chapter_title[0:4]=='斗破蒼穹':title_list=list(chapter_title)for i in range(4):title_list.pop(0)title_str=''for i in range(len(title_list)):title_str+=title_list[i]chapter_title=title_strchapter_url='https://www.rmxs8.com'+a['href']chapter_response=requests.get(url=chapter_url,headers=headers)chapter_text=chapter_response.textchapter_soup=BeautifulSoup(chapter_text,'lxml')chapter_content=chapter_soup.find('div',class_='content').textwith open('D:/斗破蒼穹/'+chapter_title+'.txt','w',encoding='utf-8') as fp:fp.write(chapter_content)fp.close()chapter_response.close()print(chapter_title,'下載完成!!!')

    以下是運行結(jié)果

    總結(jié)

    以上是生活随笔為你收集整理的python爬虫爬取《斗破苍穹》小说全文的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。