對於很多正在學習計算機的朋友來說,選擇合適的學習材料是非常重要的。
本文將通過 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.有些 ...