日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取一条新闻内容_一个爬取近百万数据的Python爬虫

發布時間:2023/12/16 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取一条新闻内容_一个爬取近百万数据的Python爬虫 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

菜鳥獨白

我寫爬蟲也有一段時間了,目前還沒有爬過百萬級的數據.前段時間身體不舒服,冬天是流感的高發季節,一直沒有寫原創的文章,很多鐵桿粉絲也非常關心我,留言詢問!非常感謝大家的關心,周末我身體稍微好點了,于是我想自己也沒有爬過百萬級的數據,要不就試試看爬一個百萬數據吧.

01百萬級的數據

1.目標網站的選擇

這次我選擇的是大名鼎鼎的Stackoverflow, 程序員心中有兩大圣殿。一個是GitHub里面有很多很多好的庫和源碼,一個就是Stackoverflow里面有很多大牛幫忙回答問題。我們打開Stackoverflow,然后搜索Python相關的問題:

2.頁面分析

發現一共有88萬多個問題,再看一下頁面的列表規律,我們按照每頁最大顯示50個問題,一共有17776頁,數據非常大

02爬蟲的策略

目前為止我還沒有爬過這么大的數據量,這次看來必須要用神器了scrapy.其實在用神器之前,我們自己寫了多并發的多線程池,我測了一下速度還可以,爬取500個數據大概有6秒左右,跟scrapy差不多

但是考慮到穩定性和方便擴展性,還是用Scrapy比較方便一些

1.頁面的爬取

scrapy的文章和資料非常多,基礎知識這里我就不細細講解.scrapy的內置功能非常強大,如果玩爬蟲scrapy是必須要學習的,使用起來需要按照它的套路,就像樂高玩具一樣,一塊一塊的搭起來就可以.下面我們講一下幾個關鍵的點:

1).頁面列表的構建

整個的stackoverflow上關于Python的問題頁面非常規整,我們可以很容易的構建列表,比如前1000頁range(1,1000),range(1000,2000):

2).單頁面的爬取

我們用scrapy genspider產生一個spider文件,我們用這個文件主要爬取頁面的內容,每個問題的內容都非常的規則,我們用css非常容易可以提取:

我們主要提取問題標題,問題描述,view,vote,answers,提問時間和用戶的名字這7個維度

2.數據的存儲

我們需要在items.py里面構建一個存儲的數據結構類,把這個7個特征存起來

然后在上面的spider類里面把頁面解析的數據一一對于存起來

item = StackoverflowItem()item['desc'] = descitem['title']=titleitem['view']=viewitem['answer']=answeritem['vote']=voteitem['start'] = startitem['user'] = useryield item

03大規模的爬取

看起來好像一切順利,于是我們開始運行爬蟲爬取,大概爬取12000個數據左右,IP就會被封掉,大量的429 錯誤代碼會出現.很明顯有反爬的策略.這個時候我們的本機IP已經封掉了,這個時候想要繼續爬取,有兩個辦法:

第一種辦法:用代理IP

1).構建一個隨機的代理池

網上免費的代理IP池很多,我們可以自己本地解析這些網頁構建一個代理池,存在數據庫里面,也可以訪問一個付費的穩定的代理.

2).構建一個下載的中間價

Scrapy強大之處在于,它給了我們很多接口,擴展性非常好!基本上爬蟲的方方面面它都內置了,類似Django真是居家旅行必備。我們只需要幾行代碼就能搞定

不要忘記了在Setting里面配置一下:

DOWNLOADER_MIDDLEWARES = {'stackoverflow.middlewares.RandomProxyMiddleware': 543,}

但是代理的ip非常不穩定,尤其是免費的。而且代理IP爬取的時間會比本機更慢,畢竟中間加了中轉

第二種方法:重啟貓繼續用本機IP

一般重啟家里的路由器有的時候會換本機的IP地址,因為本機的IP地址爬取的速度是最快,然后放慢爬取的速度,加一些delay.

我采用了第二種方法,爬了999頁大概49950條數據,并且放慢了速度,大概需要20分鐘左右

我們一共有近90萬的數據需要爬取,如果按照這樣的速度去爬取的話,大概需要7個小時才能完全爬取完畢。Scrapy提供了非常完善的異常處理和log分析,即使我們中間爬取出錯了,我們依然可以獲得已經爬取的數據.當然有條件的話可以放在服務器上去爬取,速度會更快.

04嘗鮮看一下數據

數據長啥樣,我們隨機拿5條出來看一下,數據比較粗糙沒有經過清洗,里面比較有價值的是它的view值和answer值,還有時間和標題

目前才近10萬條的數據,我們先嘗鮮看一下,里面最火的一個問題被998個人圍觀:

結論:

百萬數據的爬取其上沒有我們想象的那么難,只要熟練使用框架,控制爬取的速度,分段爬取還是可以的! 如果有穩定的代理池和高性能的服務器那就更爽啦。等我全部爬取完畢之后,我也想知道Stackoverflow上面關于Python有哪些非常火的問題,大家都在關心Python哪些方面,這近百萬的數據時間分布如何,敬請期待吧!

大數據培訓、人工智能培訓、Python培訓、大數據培訓機構、大數據培訓班、數據分析培訓、大數據可視化培訓,就選光環大數據!光環大數據,聘請專業的大數據領域知名講師,確保教學的整體質量與教學水準。講師團及時掌握時代潮流技術,將前沿技能融入教學中,確保學生所學知識順應時代所需。通過深入淺出、通俗易懂的教學方式,指導學生更快的掌握技能知識,成就上萬個高薪就業學子。

更多問題咨詢,歡迎點擊------>>>>在線客服!

總結

以上是生活随笔為你收集整理的python爬取一条新闻内容_一个爬取近百万数据的Python爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。