1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Python爬取筆趣閣小說,有趣又實用

        共 2256字,需瀏覽 5分鐘

         ·

        2021-10-27 13:29

        ↑?關注 + 星標?,每天學Python新技能

        后臺回復【大禮包】送你Python自學大禮包

        來源:https://sslljy.blog.csdn.net/

        上班想摸魚?為了摸魚方便,今天自己寫了個爬取筆閣小說的程序。好吧,其實就是找個目的學習python,分享一下。

        1. 首先導入相關的模塊

        import osimport requestsfrom?bs4?import?BeautifulSoup

        2. 向網站發(fā)送請求并獲取網站數(shù)據

        網站鏈接最后的一位數(shù)字為一本書的id值,一個數(shù)字對應一本小說,我們以id為1的小說為示例。
        進入到網站之后,我們發(fā)現(xiàn)有一個章節(jié)列表,那么我們首先完成對小說列表名稱的抓取。

        # 聲明請求頭headers = {  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'}
        # 創(chuàng)建保存小說文本的文件夾if not os.path.exists('./小說'): os.mkdir('./小說/') # 訪問網站并獲取頁面數(shù)據response = requests.get('http://www.biquw.com/book/1/').textprint(response)

        [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Uu2ddyQB-1618914957232)(.\素材圖片\中文顯示亂碼.png)]

        寫到這個地方同學們可能會發(fā)現(xiàn)了一個問題,當我去正常訪問網站的時候為什么返回回來的數(shù)據是亂碼呢?

        這是因為頁面html的編碼格式與我們python訪問并拿到數(shù)據的解碼格式不一致導致的,python默認的解碼方式為utf-8,但是頁面編碼可能是GBK或者是GB2312等,所以我們需要讓python代碼很具頁面的解碼方式自動變化

        #### 重新編寫訪問代碼```pythonresponse = requests.get('http://www.biquw.com/book/1/')response.encoding = response.apparent_encodingprint(response.text)
        '''這種方式返回的中文數(shù)據才是正確的'''

        3. 拿到頁面數(shù)據之后對數(shù)據進行提取

        當大家通過正確的解碼方式拿到頁面數(shù)據之后,接下來需要完成靜態(tài)頁面分析了。我們需要從整個網頁數(shù)據中拿到我們想要的數(shù)據(章節(jié)列表數(shù)據)

        1. 首先打開瀏覽器

        2. 按F12調出開發(fā)者工具

        3. 選中元素選擇器

        4. 在頁面中選中我們想要的數(shù)據并定位元素

        5. 觀察數(shù)據所存在的元素標簽


        '''根據上圖所示,數(shù)據是保存在a標簽當中的。a的父標簽為li,li的父標簽為ul標簽,ul標簽之上為div標簽。所以如果想要獲取整個頁面的小說章節(jié)數(shù)據,那么需要先獲取div標簽。并且div標簽中包含了class屬性,我們可以通過class屬性獲取指定的div標簽,詳情看代碼~'''# lxml: html解析庫 將html代碼轉成python對象,python可以對html代碼進行控制soup = BeautifulSoup(response.text, 'lxml')book_list = soup.find('div', class_='book_list').find_all('a')# soup對象獲取批量數(shù)據后返回的是一個列表,我們可以對列表進行迭代提取for book in book_list:    book_name = book.text    # 獲取到列表數(shù)據之后,需要獲取文章詳情頁的鏈接,鏈接在a標簽的href屬性中????book_url?=?book['href']

        4. 獲取到小說詳情頁鏈接之后進行詳情頁二次訪問并獲取文章數(shù)據

        book_info_html = requests.get('http://www.biquw.com/book/1/' + book_url, headers=headers)book_info_html.encoding = book_info_html.apparent_encodingsoup?=?BeautifulSoup(book_info_html.text,?'lxml')


        5. 對小說詳情頁進行靜態(tài)頁面分析

        info = soup.find('div', id='htmlContent')print(info.text)

        6. 數(shù)據下載

        with open('./小說/' + book_name + '.txt', 'a', encoding='utf-8') as f:????f.write(info.text)


        最后讓我們看一下代碼效果吧~

        抓取的數(shù)據


        推薦閱讀

        1. 北京朝陽一互聯(lián)網公司被端,警方上門一鍋端了!23人被帶走…

        2. 華為宣布:免費培養(yǎng)8000名Python開發(fā)者!學習免費!實踐免費!輔導免費!

        3. 肝了3天,整理了90個Pandas案例,強烈建議收藏!

        4. Python正則表達式,看完這篇文章就夠了!


        瀏覽 86
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产一级特黄大片视频播放 | 黄片免费在线观看av | 亚洲天堂手机在线观看 | 黑色超薄丝袜脚交爽91 | 亚洲区无码 | 91们嫩草伦理 | 艹b视频在线观看 | 色视频成人 在线观看免费 | 掀起裙子从后面挺进她的身体视频 | 日本一卡二卡三卡在线播放 |