当前位置: 首页>Python>正文

python爬蟲爬取網頁表格數據,python爬蟲爬取歌曲_python爬蟲實戰:爬取全站小說排行榜

python爬蟲爬取網頁表格數據,python爬蟲爬取歌曲_python爬蟲實戰:爬取全站小說排行榜

喜歡看小說的騷年們都知道,總是有一些小說讓人耳目一新,不管是仙俠還是玄幻,前面更了幾十章就成功圈了一大波粉絲,成功攀上飆升榜,熱門榜等各種榜,扔幾個栗子出來:

新筆趣閣是廣大書友最值得收藏的網絡小說閱讀網,網站收錄了當前......我就不打廣告了(其他滿足下文條件的網站也行,之前已經有做過簡單爬取章節的先例了,但效果不太理想,有很多不需要的成分被留下了,來鏈接:http://python.jobbole.com/88560/。我們本文就爬取這個網站的上千本小說。重點在和大家一起分享一些爬蟲的思路和一些很常遇到的坑。

一、爬取單本小說

爬取該網站相對來講還是很容易的,打開編輯器(推薦使用PyCharm,功能強大),首先引入模塊urllib.request(Python2.x的引入urllib和urllib2即可,待會我把2.x的也寫出來給大家看看),給出網站URL,寫下請求,再添加請求頭(雖然這個網站不封號,但作者建議還是要養成每次都寫請求頭的習慣,萬一那天碰到像豆瓣似的網站,一不留神就把你封了)話不多說,直接上圖:

python爬蟲爬取網頁表格數據。然后再將請求發送出去,定義變量response,用read()方法觀察,注意將符號解碼成utf-8的形式,省的亂碼:

打印一下看結果:

看到這么一大條就對嘍,對比一下網頁源碼,發現是一致的。

這步觀察很重要,因為這就說明該網站沒有使用AJAX異步加載,否則就要開始抓包的工作了,這個我們留著分析動態網站時候再說。建議大家在沒有更好的方法時使用。之前記得確實有直接判斷的方法,然而一不小心忘記了,有知道的讀者還請發給我哦。

我們現在得到了網站的response,接下來就是對我們想要獲取的數據進行解析、提取,但等等,考慮到我們要爬取大量小說,不搞一個數據庫存儲真是太失敗了,作者推薦MongoDB數據庫,屬于NOSQL類型數據庫,以文檔存儲為主,這里用來爬小說真是太適合不過了。但安裝起來需要一定的程序,想要試著做做的騷年可以參考一下下載和安裝教程,參考鏈接:http://blog.csdn.net/u011262253/article/details/74858211,在安裝好后為方便啟動,可以添加環境變量,但這里有個坑,你要先打開mongod(注意是mongodb,別一上來就打開mongo),然后需要準確添加dbpath路徑,不然打開很容易就會失敗,上圖上圖:

python爬取網易云付費音樂,失敗狀態

成功狀態

添加路徑后成功連接,出現waiting for connections on port 27017,則表示數據庫連接成功,而后就不要關掉這個終端了,只有保持數據庫是連接的,才可運行MongoDB數據庫(不然報錯你都不知道自己是怎么死的)

好了,連接好數據庫后,我們將數據庫與編輯器進行交互鏈接,位置很隱秘,在File>>Settings>>Plugins下添加組件Mongo Plugin,沒有就下載一個:

盜個圖

python爬取小說,我們在編輯器內編寫代碼,引入Python專門用來與MongoDB交互的模塊pymongo,然后在最上面鏈接MongoDB數據庫的端口,默認是27017,我們先創建一個叫做reading的數據庫,然后在reading內新建一個叫做sheet_words的數據表,代碼如下:

我們先找一個叫做《修羅武神》的小說來練練手,個人來講,我很討厭看小說時來回的翻頁,有時候還跳出廣告,這時候我還得返回去重新翻頁,作為一名懶得不行的懶人,我想到要是把整部小說放進一個文檔里再看不就好了么,但要是一章一章的復制粘貼我想還是算了吧,這時候你就知道爬蟲是有多么便捷了。好,現在我們要做的是把《修羅武神》這部小說完整的爬取下來,并在數據庫中備份。我們回到剛才停留的地方,在得到response后,我們應該選用一種方法來解析網頁,一般的方法有re,xpath,selector(css),建議新手使用xpath而不是re,一是因為re用不好很容易導致錯誤,“當你決定用正則表達式解決問題時,你有了兩個問題。”,相比較xpath才是步驟明確,十分穩妥;二是在Firefox,Chrome等瀏覽器中可以直接復制xpath路徑,大大的減少了我們的工作量,上圖:

如果你決定使用xpath之后,我們需要從lxml中引入etree模塊,然后就可以用etree中的HTML()方法來解析網頁了,從網頁>檢察元素(F12)中復制下來我們所需數據的路徑,我選擇的是小說每章的標題和內容,上圖,上圖:

路徑//div[@class="readAreaBox content"]/h1/text()

路徑/html/body/div[4]/div[2]/div[2]/div[1]/div[2]/text()

爬蟲爬取數據?注意注意,又來一個坑,當你復制xpath時得到的是這個東東:

//div[@class="readAreaBox content"]/h1

和這個東東;

/html/body/div[4]/div[2]/div[2]/div[1]/div[2]

但你需要的是這個路徑里的文本text,故我們需要另外添加具體文本:/text(),然后就像上面那樣啦。上代碼,查數據:

爬蟲python的爬取步驟。完整代碼見百度網盤:

鏈接:https://pan.baidu.com/s/1jHYNF86密碼:ho9d

小說有點大,一共是三千五百章,等個大約4-7分鐘吧,打開文件夾《修羅武神小說》,就可以看到我們下載好的無需翻頁的一整部小說,數據庫內頁備份好了每章的鏈接,它自動從零開始排的,就是說你要看第30章就得打開序號為29的鏈接,這個調一下下載時的順序就好了,作者很懶,想要嘗試下的讀者可以自行更改。

小說文本

數據庫連接

python爬蟲教程?看看,感覺還不錯吧,好的小例子講完了,接下來我們準備進入正題。

我們要像上面的例子那樣爬取整個網站,當然這里就不再建議使用普通的編輯器來來執行了,聰明的讀者已經發現,一部小說爬了4分鐘,那么上千本不說,單單是一組排行榜里的100本就夠爬好一會了,這就顯示出Scripy框架的作用,用專門的Scripy框架寫工程類爬蟲絕對快速省力,是居家寫蟲的必備良藥哇。

二、爬取小說榜所有小說

首先安裝Scrapy的所有組件,建議除pywin32以外都用pip安裝,不會的話度娘吧,很簡單的,pywin32需要下載與你所用Python版本相同的安裝文件。

來連接:https://sourceforge.net/projects/pywin32/

python爬取網易云音樂、Scrapy插件安裝成功

然后還是老規矩,不想每次終端運行都一點一點找路徑的話,就將根目錄添加到環境變量,然后打開終端,我們測試一下是否安裝成功:

Scrapy安裝成功

好,安裝完畢后,打開終端,新建一個Scrapy工程,這里你可以根據索引,選擇使用Scrapy的各種功能,這里不一一詳解了,D盤內已經出現了我們建立好的Scrapy工程文件夾:

打開文件夾,我們會看到Scrapy框架已經自動在reading文件夾中放置了我們所需的一切原材料:

python有什么用、打開內部reading文件夾,就可以在spiders文件夾中添加爬蟲py代碼文件了:

我們這里定向爬小說排行榜,除了我們寫的spider文件,還要在items.py中定義我們要爬取的內容集,有點像詞典一樣,名字可以隨便取,但已有的繼承類scrapy.Item可不能改,這是Scrapy內部自定義的類,改了它可找不到,spider就用我們上面抓取單本再加一個for循環就OK了,十分簡單,一言不合就上圖:

爬蟲文件截圖

爬取的小說排行榜

每個排行榜上大約20本小說

用python爬取網站數據。每部小說的爬取情況(用的是.json格式)

小說顯示內容

想要完整代碼的騷年們,見百度網盤鏈接:

items:

鏈接:https://pan.baidu.com/s/1pKLMyWr

爬蟲python代碼?密碼:3dee

Settings:

鏈接:https://pan.baidu.com/s/1slkKQV7

密碼:xn0u

Spider:

python爬取音樂并保存、鏈接:https://pan.baidu.com/s/1nvBrrtf

密碼:76z8

至此,我們所需的數據就都爬取完了,它們都按照相應的文件夾目錄放置好在相應位置,適合條理性的觀看。

作者:黑黃條紋的野喵? ? ? ? ? ?? 著作權歸作者所有

來源:作者投稿? ?鏈接:https://www.jianshu.com/p/c32ad98e7ee6

Python網絡爬蟲與數據挖掘

學習Python和網絡爬蟲關注公眾號:datanami

入群請回復「學習」

近期文章:

https://www.nshth.com/python/338561.html
>

相关文章:

  • python爬蟲爬取網頁表格數據
  • python爬取網易云付費音樂
  • python爬取小說
  • 爬蟲爬取數據
  • 爬蟲python的爬取步驟
  • python爬蟲教程
  • python爬取網易云音樂
  • python有什么用
  • 國二python難嗎,python字符串(二)
  • 電腦軟件下載app,在電腦上體驗了 16 款手機 App 后,我很失望
  • elasticsearch中文文檔,Elastic安全分析新利器 —— Event Query Language (EQL) 介紹
  • 數據結構與算法python,[FreeCodeCamp筆記] Python 數據結構和算法1 二分搜索 Binary Search
  • 黑蘋果macOS系統鏡像工具,MacOS Monterey 12.2.1 (21D62) OC 0.7.8 / Cl 5144 / PE 三分區原版黑蘋果鏡像
  • 51單片機畢業設計論文,【畢業設計】基于單片機無線充電的4軸飛行器 -物聯網 嵌入式 stm32
  • 數據庫基礎知識整理,數據庫筆記整理
  • python運行不報錯又無任何結果輸出,linux 正確錯誤輸出_報告錯誤的正確方法
  • 計算機組成原理第六版課后答案,杭電計算機組成原理實驗九R-I,杭電計組實驗9-實現R-I型指令的CPU設計實驗.doc
  • python面向對象,Python零基礎速成班-第10講-Python面向對象編程(下),Property屬性、特殊方法、設計模式、鏈表應用
  • 數據庫視圖是什么,【SpringMVC】SpringMVC模型數據+視圖解析器
  • mp3格式轉換器,FFmpeg支持的音頻和視頻編解碼格式
  • 音樂學校招生要求,學校的音樂樓
  • c語言輸入兩個數輸出較大數,C語言求兩個數的較大值
  • 定義一個函數求三個數的最大值,輸入兩個整數,要求輸出其中值較大者。要求用函數求出最大值
  • MySQL學習 DAY1
  • 一個眼神一個微笑就讓人滿足,看得到的微笑
  • centos7安裝MySQL,centos7下載spark連接mysql數據庫提取數據(pyspark,Scala,python獨立執行)
  • node.js開發,從零開始nodejs系列文章-nodejs到底能干什么
  • python控制軟件自動化,Python實現網站自動登錄---傻瓜教程
  • get all of,resent = msg.get_all('Resent-Date') AttributeError: 'str' object h
  • opencv人體動作識別,torchvision使用keypoint rcnn 進行人體關鍵點定位
  • 深度卷積神經網絡原理與實踐,卷積神經網絡resent網絡實踐
  • 服務器,win服務器系統路由器,Windows server 2012 之路由功能
  • 小青蛙走迷宮的問題
  • 漢諾塔-小青蛙
  • 小青蛙oracle跟蹤,在小青蛙TOAD中用oracle語句寫
  • 音頻頻譜分析儀安卓版,[Android]自定義繪制一個簡易的音頻條形圖,附上對MP3音頻波形數據的采集與展現
  • 連乘符號∏的運算法則,∏這個是什么符號?
  • 用例失敗jenkins卻構建成功,jenkins 構建異常_jenkins構建失敗的原因是什么?