1. 程式人生 > >一個完整的大作業

一個完整的大作業

www. 有一個 最新 find box 技術分享 ade blog 提取

本次爬取小說的網站為136書屋。

先打開花千骨小說的目錄頁,是這樣的。

技術分享

我們的目的是找到每個目錄對應的url,並且爬取其中地正文內容,然後放在本地文件中。

2.網頁結構分析

首先,目錄頁左上角有幾個可以提高你此次爬蟲成功後成就感的字眼:暫不提供花千骨txt全集下載。

繼續往下看,發現是最新章節板塊,然後便是全書的所有目錄。我們分析的對象便是全書所有目錄。點開其中一個目錄,我們便可以都看到正文內容。

技術分享

按F12打開審查元素菜單。可以看到網頁前端的內容都包含在這裏。

技術分享

我們的目的是要找到所有目錄的對應鏈接地址,爬取每個地址中的文本內容。

有耐心的朋友可以在裏面找到對應的章節目錄內容。有一個簡便方法是點擊審查元素中左上角箭頭標誌的按鈕,然後選中相應元素,對應的位置就會加深顯示。

技術分享

這樣我們可以看到,每一章的鏈接地址都是有規則地存放在<li>中。而這些<li>又放在<div id=”book_detail” class=”box1″>中。

技術分享

我不停地強調“我們的目的”是要告訴大家,思路很重要。爬蟲不是約pao,蒙頭就上不可取。

3.單章節爬蟲

技術分享

剛才已經分析過網頁結構。我們可以直接在瀏覽器中打開對應章節的鏈接地址,然後將文本內容提取出來。

技術分享

我們要爬取的內容全都包含在這個<div>裏面。

代碼整理如下

from urllib import request

from bs4 import BeautifulSoup

 

if __name__ == __main__: # 第8章的網址 url = http://www.136book.com/huaqiangu/ebxeew/ head = {} # 使用代理 head[User-Agent] = Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19 req = request.Request(url, headers = head) response
= request.urlopen(req) html = response.read() # 創建request對象 soup = BeautifulSoup(html, lxml) # 找出div中的內容 soup_text = soup.find(div, id = content) # 輸出其中的文本 print(soup_text.text)

運行結果如下:

技術分享

一個完整的大作業