當前位置:
首頁 > 最新 > python 3 爬起點中文網,簡單分析

python 3 爬起點中文網,簡單分析

python 3之後,爬蟲相對來說簡單一些。主要會用到requests和beautifulsoup庫,reuqests代替瀏覽器發送http請求並返回內容,返回的內容之前都是用正則表達式處理,當然現在也可以,不過現在beautifulsoup庫用得比較多。beautifulsoup處理html標籤,用得最多的是find、find_all、select函數。

一、研究網頁結構

網址:https://www.qidian.com/rank/yuepiao?chn=-1&page=1

我用的是chrome瀏覽器,打開網址,滑鼠右鍵選擇「檢查」,然後刷新。headers主要是頭部信息,preview是頁面的結構,主要是根據headers來寫requests,分析preview找到自己要爬取的信息然後來寫beautifulsoup。

二、爬取第一頁內容

在preview裡面,我找到了要爬取的信息都在rank-view-list這個標籤,所以剩下就很簡單了,定位到相應的標籤即可。

res=requests.get("https://www.qidian.com/rank/yuepiao?chn=-1&page=1")

soup=BeautifulSoup(res.text,"html.parser")

for news in soup.select(".rank-view-list li"):

print({"title":news.select("a")[1].text,"name":news.select("a")[2].text,"style":news.select("a")[3].text,"describe":news.select("p")[1].text,"lastest":news.select("p")[2].text})

三、循環爬取25頁的內容

因為url的前面都沒有變化,只需要更改page後面的參數就好,所以加一個循環,完整代碼如下:

importrequests

frombs4importBeautifulSoupnewsary=[]

foriinrange(25): res=requests.get("http://r.qidian.com/yuepiao?chn=-1&page="+str(i+1)) soup=BeautifulSoup(res.text,"html.parser")

fornewsinsoup.select(".rank-view-list li"): newsary.append({"title":news.select("a")[1].text,"name":news.select("a")[2].text,"style":news.select("a")[3].text,"describe":news.select("p")[1].text,"lastest":news.select("p")[2].text,"url":news.select("a")[0]["href"],"votes":news.select("p")[3].text})

#將爬取的信息保存到本地的excel文件中

importpandas

importopenpyxlnewsdf=pandas.DataFrame(newsary)newsdf.to_excel("/Users/songrenqing/Downloads/qidian_rank1.xlsx)

爬好後,在excel中大概是這種形式,我做了一些簡單的處理

四、簡單的分析

爬取到的信息主要是最新更新的章節,作者,文章類型,書名,書籍鏈接,簡介,票數。然後用jupyter對數據進行了些簡單的處理,用matplotlib繪圖。

選取了得票最高的十位作者

都市和玄幻類題材最受作者歡迎,這兩個題材的寫作者佔了一半左右。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

分享一線奢侈品品牌文化《三》時尚人士的必修課
那時陪伴你的人啊,如今在何方

TAG:全球大搜羅 |