丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當前位置:首頁 > 娛樂

【爬蟲社區(qū)】爬蟲實戰(zhàn)篇:如何爬取全網(wǎng)1200本Python書

之前寫了一篇文章,對市面上所有的Python書想法都寫了,這也算是我們數(shù)據(jù)分析系列講座中的一個小實戰(zhàn)項目。(莎士比亞,坦普林。)

上次代碼沒有寫完,正好周末有時間把代碼全部完成并且存入了數(shù)據(jù)庫中,今天就給大家一步步分析一下是我是如何爬取數(shù)據(jù),清洗數(shù)據(jù)和繞過反爬蟲的一些策略和點滴記錄。

1目標網(wǎng)站分析-主頁面爬取

1).市面上所有的Python書,都在京東,淘寶和豆瓣上,于是我選擇了豆瓣來爬取

2).分析網(wǎng)站的結(jié)構(gòu),其實還是比較簡單的,首先有一個主的頁面,里面有所有python的鏈接,一共1388本(其中有100多本其實是重復的),網(wǎng)頁底部分頁顯示一共93頁

3).這個頁面是靜態(tài)頁面,url頁比較有規(guī)律,所以很容易構(gòu)造出所有的url的地址

4).爬蟲每個分頁里面的所有的Python書和對應的url,比如第一頁里面有"笨辦法這本書",我們只需要提取書名和對應的url

2單個頁面分析爬取

1).上面我們已經(jīng)提取了93個頁面的所有的Python書和對應的url,一共是93*15大概1300多本書,首先先去重,然后我們可以把它存到內(nèi)存里面用一個字典保存,或者存到一個CSV文件中去(有同學可能奇怪為啥要存到文件里面呢,用字典存取不是方便嗎,先不說最后揭曉)

2).我們接著分析每本書頁面的特征:

上一片文章說過我們需要分析:

作者/出版社/譯者/出版年/頁數(shù)/定價/ISBN/評分/評價人數(shù)

看一下網(wǎng)站的源碼,發(fā)現(xiàn)主要的信息在div id="info" 和div class="rating_self clearfix"

3).這一部分的數(shù)據(jù)清洗是比較麻煩的,因為不是每一本書都是有點評和評分系統(tǒng)的,而且不是每一本書都有作者,頁面,價格的,所以提取的時候一定要做好異常處理,比如有的頁面長的這樣:

原始數(shù)據(jù)采集的過程中有很多不一致的數(shù)據(jù):

  • 書的日期表示格式,各種各樣都有:

有的書的日期是:'September 2007','October 22, 2007','2017-9','2017-8-25'

  • 有的書的價格是貨幣單位不統(tǒng)一,有美金,日元,歐元和人民幣

比如:CNY 49.00,135,19 €,JPY 4320, $ 176.00

3多線程爬取

1).有的同學后臺問我,你是用scrapy框架還是自己動手寫的,我這個項目是自己動手寫的,其實scrapy是一個非常棒的框架,如果爬取幾十萬的數(shù)據(jù),我一定會用這個超級武器.

2).我用的是多線程爬取,把所有的url都扔到一個隊列里面,然后設置幾個線程去隊列里面不斷的爬取,然后循環(huán)往復,直到隊列里的url全部處理完畢

3).數(shù)據(jù)存儲的時候,有兩種思路:

  • 一種是直接把爬取完的數(shù)據(jù)存到SQL數(shù)據(jù)庫里面,然后每次新的url來了之后,直接查詢數(shù)據(jù)庫里面有沒有,有的話,就跳過,沒有就爬取處理

  • 另一種是存入CSV文件,因為是多線程存取,所以一定要加保護,不然幾個線程同時寫一個文件的會有問題的,寫成CSV文件也能轉(zhuǎn)換成數(shù)據(jù)庫,而且保存成CSV文件還有一個好處,可以轉(zhuǎn)成pandas非常方便的處理分析.

4反爬蟲策略

1).一般大型的網(wǎng)站都有反爬蟲策略,雖然我們這次爬的數(shù)量只有1000本書,但是一樣會碰到反爬蟲問題

2).關(guān)于反爬蟲策略,繞過反爬蟲有很多種方法。有的時候加時延(特別是多線程處理的時候),有的時候用cookie,有的會代理,特別是大規(guī)模的爬取肯定是要用代理池的,我這里用的是cookie加時延,比較土的方法.

3).斷點續(xù)傳,雖然我的數(shù)據(jù)量不是很大,千條規(guī)模,但是建議要加斷點續(xù)傳功能,因為你不知道在爬的時候會出現(xiàn)什么問題,雖然你可以遞歸爬取,但是如果你爬了800多條,程序掛了,你的東西還沒用存下來,下次爬取又要重頭開始爬,會吐血的(聰明的同學肯定猜到,我上面第二步留的伏筆,就是這樣原因)

5代碼概述篇

1).整個的代碼架構(gòu)我還沒有完全優(yōu)化,目前是6個py文件,后面我會進一步優(yōu)化和封裝的

  • spider_main:主要是爬取93個分頁的所有書的鏈接和書面,并且多線程處理

  • book_html_parser:主要是爬取每一本書的信息

  • url_manager:主要是管理所有的url鏈接

  • db_manager:主要是數(shù)據(jù)庫的存取和查詢

  • util:是一個存放一些全局的變量

  • verify:是我內(nèi)部測試代碼的一個小程序

2).主要的爬取結(jié)果的存放

all_book:主要存放1200多本書的url和書名

:主要存放具體每一本書的信息

3).用到的庫

爬蟲部分:用了requests,beautifulSoup

數(shù)據(jù)清洗:用了大量的正則表達式,collection模塊,對書的出版日期用了datetime和calendar模塊

多線程:用了threading模塊和queue

結(jié)論:


好,今天的全網(wǎng)分析Python書,爬蟲篇,就講到這里,基本上我們整個這個項目的技術(shù)點都講了一遍,爬蟲還是很有意思的,但是要成為一個爬蟲高手還有很多地方要學習,想把爬蟲寫的爬取速度快,又穩(wěn)健,還能繞過反爬蟲系統(tǒng),并不是一件容易的事情. 有興趣的小伙伴,也可以自己動手寫一下哦。源碼等后面的數(shù)據(jù)分析篇講完后,我會放github上,若有什么問題,也歡迎留言討論一下.

End.

來源:公眾號“菜鳥學python”

運行人員:中國統(tǒng)計網(wǎng)小編(微信號:itongjilove)

微博ID:中國統(tǒng)計網(wǎng)

中國統(tǒng)計網(wǎng),是國內(nèi)最早的大數(shù)據(jù)學習網(wǎng)站,公眾號:中國統(tǒng)計網(wǎng)

1.《【爬蟲社區(qū)】爬蟲實戰(zhàn)篇:如何爬取全網(wǎng)1200本Python書》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《【爬蟲社區(qū)】爬蟲實戰(zhàn)篇:如何爬取全網(wǎng)1200本Python書》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/yule/3179816.html

上一篇

【伍佰億服裝網(wǎng)】浙江棒杰數(shù)碼針織品股份有限公司關(guān)于變更公司名稱暨完成工商變更登記的公告

【爬蟲社區(qū)】Python入門(一):爬蟲基本結(jié)構(gòu)&簡單實例

  • 【爬蟲社區(qū)】Python入門(一):爬蟲基本結(jié)構(gòu)&簡單實例
  • 【爬蟲社區(qū)】Python入門(一):爬蟲基本結(jié)構(gòu)&簡單實例
  • 【爬蟲社區(qū)】Python入門(一):爬蟲基本結(jié)構(gòu)&簡單實例
【爬蟲社區(qū)】謝佳標:RCurl爬蟲和Shiny包在游戲行業(yè)的應用

【爬蟲社區(qū)】謝佳標:RCurl爬蟲和Shiny包在游戲行業(yè)的應用

爬蟲社區(qū)相關(guān)介紹,【數(shù)盟致力于成為最卓越的數(shù)據(jù)科學社區(qū),聚焦于大數(shù)據(jù)、分析挖掘、數(shù)據(jù)可視化領(lǐng)域,業(yè)務范圍:線下活動、在線課程、獵頭服務、項目對接】 :010 分享嘉賓 謝佳標準音樂趣味游戲高級數(shù)據(jù)分析師 共享主要內(nèi)容 ...

爬蟲社區(qū) 虎撲社區(qū)論壇數(shù)據(jù)爬蟲分析報告

爬蟲社區(qū) 虎撲社區(qū)論壇數(shù)據(jù)爬蟲分析報告

以下是虎撲官方介紹: 虎撲是一個面向年輕男性的專業(yè)網(wǎng)站,涵蓋籃球、足球、F1、NFL等賽事的原創(chuàng)新聞欄目和視頻報道。它有一個大型的生活/影視/電競/汽車/數(shù)字在線交流社區(qū),對談論體育充滿興趣。 二、數(shù)據(jù)描述 使用的數(shù)據(jù)源: 2018/1/1~1/19的兩個半星期,虎撲論壇步行街各分區(qū)的帖子全部被撤,關(guān)注度極低的帖子總數(shù)為3.3W...