當前位置:首頁 » 網站資訊 » 如何爬取多個網站文章
擴展閱讀
漫畫網站有哪些值得推薦 2025-10-04 04:52:28

如何爬取多個網站文章

發布時間: 2022-12-18 23:44:08

A. 怎麼爬取西南科技大學新聞網前20頁的網頁信息

爬取思路與方法步驟如下:
第一步,用requests獲取新聞目錄的網頁源碼。
第二步,獲取每一篇文章的url,並先提取日期、標題。
第三步,通過日期限制爬取范圍,並對每一則新聞的url發起get請求。
第四步,在每則新聞網頁的源代碼中獲取剩下的信息,即作者、正文、瀏覽數。
第五步,存入資料庫。

B. 如何爬取全網1200本Python書

前面寫了一篇文章關於爬取市面上所有的Python書思路,這也算是我們數據分析系列講座裡面的一個小的實戰項目。上次代碼沒有寫完,正好周末有時間把代碼全部完成並且存入了資料庫中,今天就給大家一步步分析一下是我是如何爬取數據,清洗數據和繞過反爬蟲的一些策略和點滴記錄。
1
目標網站分析-主頁面爬取
1).市面上所有的Python書,都在京東,淘寶和豆瓣上,於是我選擇了豆瓣來爬取
2).分析網站的結構,其實還是比較簡單的,首先有一個主的頁面,裡面有所有python的鏈接,一共1388本(其中有100多本其實是重復的),網頁底部分頁顯示一共93頁

3).這個頁面是靜態頁面,url頁比較有規律,所以很容易構造出所有的url的地址

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

2
單個頁面分析爬取
1).上面我們已經提取了93個頁面的所有的Python書和對應的url,一共是93*15大概1300多本書,首先先去重,然後我們可以把它存到內存裡面用一個字典保存,或者存到一個csv文件中去(有同學可能奇怪為啥要存到文件裡面呢,用字典存取不是方便嗎,先不說最後揭曉)
2).我們接著分析每本書頁面的特徵:

上一片文章說過我們需要分析:
作者/出版社/譯者/出版年/頁數/定價/ISBN/評分/評價人數
看一下網站的源碼,發現主要的信息在div id="info" 和div class="rating_self clearfix"

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

原始數據採集的過程中有很多不一致的數據:
書的日期表示格式,各種各樣都有:
有的書的日期是:'September 2007','October 22, 2007','2017-9','2017-8-25'
有的書的價格是貨幣單位不統一,有美金,日元,歐元和人民幣
比如:CNY 49.00,135,19 €,JPY 4320, $ 176.00
3
多線程爬取
1).有的同學後台問我,你是用scrapy框架還是自己動手寫的,我這個項目是自己動手寫的,其實scrapy是一個非常棒的框架,如果爬取幾十萬的數據,我一定會用這個超級武器.
2).我用的是多線程爬取,把所有的url都扔到一個隊列裡面,然後設置幾個線程去隊列裡面不斷的爬取,然後循環往復,直到隊列里的url全部處理完畢
3).數據存儲的時候,有兩種思路:
一種是直接把爬取完的數據存到SQL資料庫裡面,然後每次新的url來了之後,直接查詢資料庫裡面有沒有,有的話,就跳過,沒有就爬取處理
另一種是存入CSV文件,因為是多線程存取,所以一定要加保護,不然幾個線程同時寫一個文件的會有問題的,寫成CSV文件也能轉換成資料庫,而且保存成CSV文件還有一個好處,可以轉成pandas非常方便的處理分析.
4
反爬蟲策略
1).一般大型的網站都有反爬蟲策略,雖然我們這次爬的數量只有1000本書,但是一樣會碰到反爬蟲問題
2).關於反爬蟲策略,繞過反爬蟲有很多種方法。有的時候加時延(特別是多線程處理的時候),有的時候用cookie,有的會代理,特別是大規模的爬取肯定是要用代理池的,我這里用的是cookie加時延,比較土的方法.
3).斷點續傳,雖然我的數據量不是很大,千條規模,但是建議要加斷點續傳功能,因為你不知道在爬的時候會出現什麼問題,雖然你可以遞歸爬取,但是如果你爬了800多條,程序掛了,你的東西還沒用存下來,下次爬取又要重頭開始爬,會吐血的(聰明的同學肯定猜到,我上面第二步留的伏筆,就是這樣原因)
5
代碼概述篇
1).整個的代碼架構我還沒有完全優化,目前是6個py文件,後面我會進一步優化和封裝的

spider_main:主要是爬取93個分頁的所有書的鏈接和書面,並且多線程處理
book_html_parser:主要是爬取每一本書的信息
url_manager:主要是管理所有的url鏈接
db_manager:主要是資料庫的存取和查詢
util:是一個存放一些全局的變數
verify:是我內部測試代碼的一個小程序
2).主要的爬取結果的存放

all_books_link.csv:主要存放1200多本書的url和書名

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

3).用到的庫
爬蟲部分:用了requests,beautifulSoup
數據清洗:用了大量的正則表達式,collection模塊,對書的出版日期用了datetime和calendar模塊
多線程:用了threading模塊和queue
結論:
好,今天的全網分析Python書,爬蟲篇,就講道這里,基本上我們整個這個項目的技術點都講了一遍,爬蟲還是很有意思的,但是要成為一個爬蟲高手還有很多地方要學習,想把爬蟲寫的爬取速度快,又穩健,還能繞過反爬蟲系統,並不是一件容易的事情. 有興趣的小夥伴,也可以自己動手寫一下哦。源碼等後面的數據分析篇講完後,我會放github上,若有什麼問題,也歡迎留言討論一下.