1. 程式人生 > 其它 >[入門級專案]採集《python進階》教程

[入門級專案]採集《python進階》教程

首發於:https://mp.weixin.qq.com/s/Xo7StWY0VS2aEQi-52FNlA

前言

  • 難度:入門級
  • python版本:3.7
  • 主要收穫:爬蟲經驗+100;python經驗+100

主要會用到python和爬蟲技術,入門級專案,偏簡單,適合新人練手,看這個之前最好是對python和爬蟲有一些瞭解

需求

需求名稱:採集《python進階》教程

網頁:https://docs.pythontab.com/interpy/

需求:採集網頁上的所有進階內容,並整理成文件

採集具體的進階教程內容即可

需求分析

我們看下需求,需要採集的東西並不是很多,我們先開啟網頁看一下

看下目錄,資料量不是很多

大致數了一下就幾十個頁面,這很少了

對應下需求,根據經驗,列下我們需要解決的一些問題

  1. 單頁面抓取問題
  2. 多頁面url獲取問題
  3. 整理成文件

單頁面抓取問題

這個問題其實就是看下抓取頁面的請求構造

我們先找下原始碼中是否有包含我們所需要的資料

在頁面上找個稍微特殊的詞

比如說 “小清新”

鍵盤按下ctrl+U檢視下原始碼

在按下ctrl+F,查詢“小清新”

可以看到,原始碼中就直接有我們所需要的資料,那麼可以判斷,這八成就是一個get請求

如果沒有反爬,那就比較簡單了

直接構建一個最簡單的get請求試一下

import requests 
r = requests.get('https://docs.pythontab.com/interpy/')
print(r.text)
print(r)

執行一下,列印輸出的是有我們需要的資料(由於太多就不貼了),完美!

多頁面url獲取問題

我們可以看到所需要採集的頁面幾十個,並不是很多,就需求目標而言,我們其實是可以一個個的複製下來,但是這樣沒有技術範兒,而且如果說我們採集的頁面很多呢,幾百幾千,甚至幾十萬,手動複製的效率實在過於低下

我們開啟網頁

可以看到有個Next按鈕

這裡就有下一頁的url

我們跳到最後一頁,就會發現Next沒有了

那麼我們是不是就可以通過這種方式來拿到各個頁面的url

我們一直去提Next按鈕獲取下一頁的url,直到最後一頁,沒有Next,判斷結束

整理成文件

本來想將抓取到的內容(去標籤)儲存成txt的,然後在轉成pdf格式,好看一些

不過由於儲存的內容沒有格式,轉換後並不好看,所以決定不去標籤,直接存成html檔案

然後在轉換成pdf

這裡有個線上的將html轉成pdf,還是滿好用的:https://www.aconvert.com/cn/ebook/

程式碼實現

邏輯理清了,程式碼實現就比較簡單了

直接上下程式碼

import requests 
from lxml import etree
from urllib import parse
def get_html(url):
    """網頁採集資料,並儲存到檔案中

    Args:
        url (str): 待採集的url

    Returns:
        str: 下一頁的url
    """
    r = requests.get(url)
    html = etree.HTML(r.text)
    content = html.xpath('//div[@role="main"]')
    content0 = etree.tostring(content[0])
    # print(content0)
    with open("python進階教程.html","ab+") as f:
        f.write(content0)
    _next = html.xpath("//a[contains(text(),'Next »')]/@href")
    if not _next:
        return ''
    nexturl = parse.urljoin(url,_next[0])
    print(nexturl)
    return nexturl
url = 'https://docs.pythontab.com/interpy/'
while 1:
    url = get_html(url)
    if not url:
        break 

執行程式碼會在當前目錄生成一個python進階教程.html檔案

開啟看一眼

還是可以的,不過我這裡把它轉換成更通用的pdf型別

html轉換成pdf

先開啟線上轉換的網頁:https://www.aconvert.com/cn/ebook/

選擇html檔案

選擇轉換的目標格式

點選轉換

下載檔案

開啟pdf看一下

格式還是很完美的!

注:

其實python有個pdfkit庫,可以將一個html轉換成pdf,有興趣的朋友可以嘗試下

關注我獲取更多內容
注:轉載還請註明出處,謝謝_