Python爬蟲案例 抓取豆瓣程式設計類高評分書籍

2021-09-13 03:01:45 字數 2055 閱讀 2230

對於很多正在學習計算機的朋友來說,選擇合適的學習材料是非常重要的。

本文將通過 python 來爬取豆瓣程式設計類評分大於 9.0 的書籍。

此案例很適合入門爬蟲的朋友學習,總共也就 3 個函式。

下圖是最終的結果:

下面進入正題:首先我們找到豆瓣的程式設計類書籍**:

程式設計
進入**之後我們翻到最下面的分頁導航:

%...&type=t
這個位址則是我們要採集的內容。第一頁 start = 0,第二頁 start = 20 ... 以此類推。

找到了要採集的 url 之後,接下來就是分析我們真正需要的資料在 html 文件中的位置。

f12 開啟控制台發現,這些 li 標籤正是我們的目標內容。

見下圖:

有了以上內容,那麼我們很容易就有了思路:

抓取頁面上所有的 li 標籤

迴圈處理這裡 li 標籤,找到我們所需的三個內容,並儲存到列表中

根據評分排序

儲存資料到 csv

除了上次使用到的 requests, beautifulsoup, 還增加了幾個包。

首先我們定義乙個 get 函式,接受乙個頁碼,表示要爬取到多少頁。

**解讀:

因為豆瓣的分頁是根據 url 中的 start 引數(相當於偏移量)來分的,所以在剛開始定義了乙個 offset 變數,根據我們傳入的頁碼來計算正確的 start 引數的值。

後面通過 find_all 方法獲取所有的 li 物件,存入 book_info_list 列表中,那麼接下來就是遍歷這個列表,從每乙個元素中得到 star、 title、comment 三個變數。最終得到乙個二維陣列 result。

定義排序方法,接收上面得出的 result 變數,並且將這個列表根據評分來排序。

將最終排好的資料寫入 csv 中。

以上則是我們爬取豆瓣的小案例,有經驗的朋友們會發現這個案例有很大的不足之處。

在執行這個程式的時候,我們會發現會非常緩慢。原因就是每次請求豆瓣的分頁 url 之後,接下來緊跟著一條龍的獲取書名等操作,獲取完這個頁面的所有資料之後再接著抓取下乙個分頁頁面。也就是完全同步的編碼方式。所以慢是必然的。

那麼如何調整**結構才能使程式執行迅速呢?

這裡介紹乙個簡單又常用的方法:

我們可以採用多執行緒技術,python 的 threading 包是專門用於多執行緒處理的。採用這種方式又多增加了兩個包:

threading

queue

豆瓣電影資料抓取案例

1 位址 豆瓣電影 排行榜 劇情 2 目標 電影名稱 電影評分1 request url 基準url位址 https 2 query string 查詢引數 抓取的查詢引數如下 type 13 電影型別 interval id 100 90action start 0 每次載入電影的起始索引值 0 ...

Python 爬蟲 抓取豆瓣讀書TOP250

coding utf 8 author yukun import requests from bs4 import beautifulsoup 發出請求獲得html原始碼的函式 def get html url 偽裝成瀏覽器訪問 resp requests.get url,headers heade...

python爬蟲 豆瓣

在爬蟲時候,通過requests.get 得到不正確的狀態碼 4 表示出錯 異常狀態碼檢視 fr aladdin 4 19 用requests庫的get 函式抓取乙個你平時經常使用的 主頁,並檢視該 的爬蟲協議 如果有的話 預設答案是正確,你成功了嗎?fp.write r.content b.有些 ...