Python3 全域性觀的爬蟲知識

2021-09-24 19:36:45 字數 2896 閱讀 2491

目錄

一:爬取

解決服務端渲染型別:

解決客服端渲染型別:

方式一:尋找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...