目錄
一:爬取
解決服務端渲染型別:
解決客服端渲染型別:
方式一:尋找ajax介面
方式二:模擬瀏覽器執行
三:一刀見血的提取js資料
四:模擬執行js
二:解析
三:儲存
四:反反爬
五:加速(高效爬取)
想了想這個得分5步寫爬取,解析,儲存,反爬,加速
如何選取適當的方式來實現頁面抓取
我所見頁面大致只有2種渲染方式a
1.服務端渲染,頁面結果直接返回。(靜態頁面)
2.客服端渲染,頁面結果由js生成,頁面可能還經過ajax等方式從後台獲取。(動態頁面)
直接使用requests
trick:可以考慮看我的部落格-------
python3爬蟲工具,將curl語法轉化為python的requests爬蟲
包你35秒爬出來
1,chrome、firefox瀏覽器f12檢視請求~~~~~本人兩個瀏覽器互動使用
2,fiddler抓包工具,注意需要設定**(神奇的工具,你關了抓包工具**也沒了)
1.selenium驅動chrome,firefox等瀏覽器抓取
2.spynner/ghost.py依賴於pyqt
3.phantomjs無介面瀏覽器
4.pyppeteer自動化抓取
trick:
python版puppeteer
1.正規表示式提取關鍵的js.渲染資料都隱藏在html head的js變數裡
2.使用debug,大致讀懂js的流程,摳出相關流程的js
1.selenium,使用execute—script執行js**,return返回
trick:請用下面三種常用的包執行js python3 爬蟲 中國土地市場網 破解js加密詳解 (該文章中有使用示例)
2.pyexecjs,個人喜好用,因為支援phantomjs引擎
3.pyv8,淘汰玩意python2 用,還停止了維護
4.js2py,最簡單的一種,直接能讓python執行js**
說了這麼多,懂事的朋友應該發現了,上面都是說的網頁版的
目的:保留有效資訊
常用匹配方式:
1.正則~~re庫,萬能方式,高效,編寫不便
2.xpath~lxml,scrapy selector庫,最常用方式
3.jsonpath~jsonpath庫,非常方便取json格式資料(雖然只會使用..方法)
4.css ~cssselect庫(徹底放棄,xpath那麼好用)
5.bs4~bs4庫
~~來點真傢伙
智慧型解析(啥,不會深度學習,那你和我一樣學了乙個假的python),你沒看錯,也沒搞錯,雖然我乙個都沒有弄過,逼還是要裝起來~~
高階大牛肯定會說寫規則這麼麻煩,那我來個智慧型的吧。。。
方式一:readability,用它定義不同區塊的不同標註集合,計算最可能的區塊位置,如使用news*****庫
方式二:疏密度判斷,計算單位個數區塊內的平均文字內容長度,根據疏密程度計算
方式三:scrapely自學習,指定乙個頁面和提取結果樣例,讓它自學提前規則,提前同類頁面(這個學一下,比較現實可行)
方式四:深度學習,使用深度學習來對解析位置進行有監督的學習,需要大量標註資料
~~據我所知的4中方式都吐出來了,可是我不會一種啊啊啊
trick:當時確實不會沒騙大家,現在可用方式四深度學習來實現智慧型解析,也就是大家所說的人工智慧
儲存需要尋找合適的媒介來儲存結果
常用方式:
使用庫:csv,xlwt,json,pandas,python-docx等
2.資料庫儲存,如mysql,mongodb,hadoop,kafka,hbase,redis等
使用庫:pymysql,redis-py,pymongo等等
4.瀏覽器儲存,就像你寫乙個web裡面加資料一樣的,具體實現還得查資料
爬蟲小總結)
對海量資料抓取,也是本部落格最精彩的一部分啦
常見的措施:
1.多執行緒\程序(分情況,io密集用執行緒···cpu密集用程序(cpu多核處理))
io密集用執行緒,多執行緒庫threading,gil限制,你得知道生產者消費者模式,加鎖與佇列能有效優化,
2.非同步~·~變成非阻塞式加速
asyncio(我見過乙個博主,就是用這個庫來實現非同步),twisted(基於驅動實現非同步),scrapy(基於twisted)等
3.分布式,多台機器跑肯定快啊
kafka分布式訊息系統,scrapy-redis
4.優化程式,如解析,排程,去重等實現方式
這裡就說說去重實現方式!!
# spider_middlewares =
# deltafetch_enabled = false
5.架構加速,你怕不怕
scrapy 單個專案對接好分布式,儲存等配置後,部署到scrapyd,再用gerapy監控,完美
爬蟲的執行狀態scrapy+scrapyd +gerapy分布式爬蟲管理框架**))
python3爬蟲實戰(3)
今天心血來潮去爬取了一下招聘 的實時招聘資訊。是 選的條件是北京,實習生,計算機軟體。分析 之後發現還是很容易的,不過過程中出了不少小問題,在這裡分享一下。想要爬取的是類似的表單內容。是在ul的li裡。用beautifulsoup解析之後,tem ul bsoj.find ul 存下整個ul元素。對...
python3 爬蟲入門
這裡爬取貓眼電影 top100 榜的資訊,作為學習的第乙個demo。今天開始接觸的python,從爬蟲開始。語言相對來說比較簡單,環境配置到是花了不少時間。有個要注意的點是在引入beautifursoup庫的時候會報錯,因為3.x的庫需要引入的是beautifursoup4.到這一步環境配置基本上o...
python3爬蟲入門
pip install requests2 匯入requests import requests 3 requests方法 requests.get 獲取html網頁的主要方法,對應http的get4 獲取流程 url 使用get方法獲取資料,返回包含網頁資料的response響應,超時時間測試 r...