1. 程式人生 > >- Python HTML正文抽取(儲存為JSON) [ 筆記 ]

- Python HTML正文抽取(儲存為JSON) [ 筆記 ]

抽取HTML後的內容,一般都會儲存為JSON或者CSV格式。《Python爬蟲開發與專案實戰》一書中以小說閱讀網為例,抽取出小說的標題、章節、名稱和對應連結,那麼為了保險起見,還是老老實實照著來吧 —— 

在抽取之前,作者在書中特意強調了一點,http://seputu.com/是一個靜態網站,它所有的標題章節名稱都不是由JavaScript動態載入的,雖然我不明白作者為什麼要特意強調這一點,但是既然他強調了,作為學習者,我也還是把這個前提提出來,至於為什麼,等我以後學會了爬蟲應該就知道為什麼了,反正現在不管

 那麼開啟網站可以看到,整個小說的目錄是醬紫的,這裡只截圖一部分放出來,意思意思就可以了 ——

 

首先第一步:

當然是先進行網路請求,打印出請求的內容

# -*- coding:utf-8 -*-
import requests

# 1:請求
url = 'http://seputu.com/'
r = requests.get(url)
print r.content

剪下一下列印的內容:

可以看到:

大標題諸如“盜墓筆記1七星魯王宮”在<div class="mulu-title">下,然後其他的各個小章節,都在<div class="box">之下,那麼繼續coding —— 然後我悲催的發現,書上的例子跑不通,於是我只能對著例子刪刪改改:

# -*- coding:utf-8 -*-
import requests
from BeautifulSoup import *
import json

list = []

url = 'http://seputu.com/'
r = requests.get(url)  # 使用GET請求訪問連結
content = r.content
if r.status_code == requests.codes.ok:
    soup = BeautifulSoup(content, fromEncoding='utf-8')  # html.parser
    content = []
    for box in soup.findAll('div', attrs={'class': 'box'}):
        for a in box.findAll('a'):
            href = a.get('href')  # 每個小章節的連結
            title = a.get('title')  # 每個小章節的標題
            list.append({"href": href, "title": title})

    for mulu in soup.findAll('div', attrs={'class': 'mulu-title'}):
        mulu_title = mulu.h2.string  # 目錄大標題
        content.append({"mulu_title": mulu_title, "content": list})

    with open('mytest.json', 'wb') as fp:
        json.dump(content, fp=fp, indent=4)  # dump:把Python物件轉換成JSON物件,並將JSON物件通過fp檔案流寫入到檔案中
else:
    r.raise_for_status()

截圖一張最終效果:

總算是搞定了,拍桌~

相關推薦

- Python HTML正文抽取儲存JSON [ 筆記 ]

抽取HTML後的內容,一般都會儲存為JSON或者CSV格式。《Python爬蟲開發與專案實戰》一書中以小說閱讀網為例,抽取出小說的標題、章節、名稱和對應連結,那麼為了保險起見,還是老老實實照著來吧 ——  在抽取之前,作者在書中特意強調了一點,http://seputu

json 資料持久化以賬號和使用者名稱的儲存

以賬號和使用者名稱的儲存為例 一、建立公共類使用者,定義使用者類的欄位:如賬號、密碼等 二、建立公共類列表,在列表類內定義一個使用者類型別的列表,定義列表需要匯入名稱空間System.Collections.Generic 三、儲存使用者 1.建立一個註冊方法 2. 判斷輸入框是否為

JQuery實現AJAX異步請求實現省市聯動數據傳輸格式json

數據傳輸 char html utf-8 har change 字段 語法規則 false json概述:javascript object notation 是一種輕量級的數據交換格式。json本質上就是一種數據格式的字符串;javascript可以直接解析json,因為

python獲取當天時間、昨天時間和明天時間或者n天時間單位

Python獲取今天時間: >>> datetime.datetime.now() datetime.datetime(2018, 10, 19, 21, 13, 46, 577073) >>> import time >>> t

python訓練好的模型儲存pmml檔案供java呼叫

1、PMLL概述      用python訓練好的機器學習模型如果上線部署,被java呼叫,可以將模型儲存為pmml檔案,那麼什麼是pmml呢?PMML是資料探勘的一種通用的規範,它用統一的XML格式來描述我們生成的機器學習模型。這樣無論你的模型是sklearn,R還是Sp

RHCS實現高可用中的共享儲存iscisimysql

1、實驗環境 server2 172.25.66.2(配置Nginx、ricci、luci) server3 172.25.66.3(Apache) server4 172.25.66.4 (Apache) server5 172.25.66.5(配置Nginx

vue使用axios傳送post請求datajson格式

安裝axios cnpm install axios 在main.js中新增axios,此處注意axios外掛不同於其他,引用不能使用Vue.use();而是使用Vue.prototype.$axios = axios; import axios from '

Python Pillow (PIL) Image.save 儲存jpg圖片壓縮問題

在使用Pillow中的Image.save()方法,使用預設引數儲存jpg圖片的過程中發現圖片被壓縮的很嚴重,導致原來很大的大小變成幾十K。這是因為在儲存為jpg的過程中,內部使用壓縮演算法對圖片進行的壓縮處理。 但是有些時候往往需要圖片的大小不能變化太大或不能太小。所以在

Python入門經典. 以解決計算問題導向的Python編程實踐高清版PDF

pan https 有助於 開始 lse 打開 重點 好的 字典 Python入門經典. 以解決計算問題為導向的Python編程實踐(高清版)PDF百度網盤鏈接:https://pan.baidu.com/s/1juLsew8UiOErRheQPOuTaw 提取碼:fssd

Python爬蟲 抓取大資料崗位招聘資訊51job

簡單介紹一下爬蟲原理。並給出 51job網站完整的爬蟲方案。 爬蟲基礎知識 資料來源 網路爬蟲的資料一般都來自伺服器的響應結果,通常有html和json資料等,這兩種資料也是網路爬蟲的主要資料來源。 其中html資料是網頁的原始碼,通過瀏覽器-檢視原始碼可

Python Plot+Bokeh畫圖並儲存圖片或網頁

近來學習了下python matplotlib繪圖,其功能還是很強大的。 由於需要在一張圖上展示多個子圖,所以用到subplot,python 繪製這種圖的方式有很多種,這裡介紹其中一種方法: 1.第一種畫圖plt.subplots() import nu

如何正確開始一個python專案django

寫在前面: 如果隨意建立一個python專案,那麼該專案往往會很依賴本地的環境,當專案移植到其他機器上,往往會出現相容性問題(python版本不一致,缺少包等)。本文以django專案為例介紹如何開始一個python專案,包括建立乾淨的python虛擬環境,安

python:linux下字串轉換JSON

JSON是一種輕量級的資料交換格式,易於人類閱讀和編寫,同時也易於機器解析和生成。由於JSON的諸多優點,已經廣泛使用在各個系統中,因此,我們經常會有將JSON字串轉換為JSON物件的需求。 例如,在筆者的工作過程中,我們的系統會呼叫底層服務的API,底層服務的API一般都是以JSON的格式返回,為

python 將日期戳五位數時間轉換標準時間

data and delta con panda blue important 轉化 col 5位數日期戳 讀取 .mat 文件處理裏面數據時,發現裏面的日期數據全部都是 “5位數” 數字,很不解; 後來查到可以在excel中通過設置單元格調回標

python 讀取txt檔案並儲存array

Reading Text Tables with Python Reading tables is a pretty common thing to do and there are a number of ways to read tables besides writi

matlab心形動畫儲存gif格式程式

function M close all clear clc %%初始化 Times=10; [x,y]=meshgrid(-10:0.02:10); %% for T=1:Times          z=-(17*x.^2-16*y.*abs(x)+17.*y.^2)

資料儲存(無資料庫版)之一:儲存JSON

#coding:utf8 #使用Requests訪問http://seputu.com/,獲取並列印HTML文件內容 import requests user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

Python抓取網頁並儲存PDF

1、開發環境搭建 (1)Python2.7.13的安裝:參考《廖雪峰老師的網站》 (2)Python包管理器pip的安裝:參考《pip安裝文件說明》 因為基於版本2.7.13,因為2.7.9以上已經自帶pip,所以不需要單獨安裝,但是需要我們更新。上面的說

java連線mysql獲取資料儲存json格式

Java String driver = "com.mysql.jdbc.Driver";//驅動名稱 String url = "jdbc:mysql://loc

python控制窗口移動軌跡

most find pytho sin import note true 軌跡 code 需先打開一個無標題記事本, import win32con import win32gui import time import math notepad = wi