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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络爬虫干货总结!

發布時間:2024/7/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络爬虫干货总结! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

轉載:https://cloud.tencent.com/developer/article/1366434

bilibili 視頻 -?聊聊 Python 的應用 - 健壯高效的網絡爬蟲:https://www.bilibili.com/video/av34379204/

?

?

? ? ? ? 昨天的時候我參加了掘金組織的一場 Python 網絡爬蟲主題的分享活動,主要以直播的形式分享了我從事網絡爬蟲相關研究以來的一些經驗總結,整個直播從昨天下午 1 點一直持續到下午 5 點,整整四個小時。

? ? ? ? 整個分享分為三個階段,第一階段先介紹了自己從大學以來從事編程開發以來的相關歷程,第二階段是正式的網絡爬蟲分享流程,詳細總結了網絡爬蟲開發的一些要點,第三階段是解答一些提問,并抽獎送出一些禮品。所以在這里我會對我昨天分享的主要內容做下總結,另外還會附上視頻回放、PPT,另外還會為大家送上一些福利,希望大家可以支持!

?

?

?

總括

?

????????整個分享的主題叫做《健壯高效的網絡爬蟲》,本次分享從 抓取、解析、存儲、反爬、加速 五個方面介紹了利用 Python 進行網絡爬蟲開發的相關知識點和技巧,介紹了不同場景下如何采取不同措施高效地進行數據抓取的方法,包括 Web 抓取、App抓取、數據存儲、代理選購、驗證碼破解、分布式抓取及管理、智能解析?等多方面的內容,另外還結合了不同場景介紹了常用的一些工具包,全部內容是我在從事網絡爬蟲研究過程以來的經驗精華總結。

?

?

?

爬取

?

對于爬取來說,我們需要學會使用不同的方法來應對不同情景下的數據抓取任務。

爬取的目標絕大多數情況下 要么是 網頁要么是 App,所以這里就分為這兩個大類別來進行了介紹。

  • 對于網頁來說,我又將其劃分為了兩種類別,即 服務端渲染客戶端渲染。
  • 對于 App 來說,我又針對接口的形式進行了四種類別的劃分:普通接口、加密參數接口、加密內容接口、非常規協議接口

?

所以整個大綱是這樣子的:

網頁爬取

  • 服務端渲染
  • 客戶端渲染
  • App 爬取

  • 普通 接口
  • 加密參數 接口
  • 加密內容 接口
  • 非常規協議 接口
  • 爬取 / 網頁爬取
  • ?

    web 網頁抓取

    ?

    服務端渲染:意思就是頁面的結果是由服務器渲染后返回的,有效信息包含在請求的 HTML 頁面里面,比如貓眼電影這個站點。

    客戶端渲染:意思就是頁面的主要內容由 JavaScript 渲染而成,真實的數據是通過 Ajax 接口等形式獲取的,比如淘寶、微博手機版等等站點。

    ?

    服務端渲染的情況就比較簡單了,用一些基本的 HTTP 請求庫就可以實現爬取,如 urllib、urllib3、pycurl、hyper、requests、grab 等框架,其中應用最多的可能就是 requests 了。

    ?

    對于客戶端渲染,這里我又劃分了四個處理方法:

  • 尋找 Ajax 接口,此種情形可以直接使用 Chrome/Firefox 的開發者工具直接查看 Ajax 具體的請求方式、參數等內容,然后用 HTTP 請求庫模擬即可,另外還可以通過設置代理抓包來查看接口,如 Fiddler/Charles。
  • 模擬瀏覽器執行,此種情形適用于網頁接口和邏輯較為復雜的情況,可以直接以可見即可爬的方式進行爬取,如可以使用 Selenium、Splinter、Spynner、pyppeteer、PhantomJS、Splash、requests-html 等來實現。
  • 直接提取 JavaScript 數據,此種情形適用于真實數據沒有經過 Ajax 接口獲取,而是直接包含在 HTML 結果的某個變量中,直接使用正則表達式將其提取即可。
  • 模擬執行 JavaScript,某些情況下直接模擬瀏覽器執行效率會偏低,如果我們把 JavaScript的某些執行和加密邏輯摸清楚了,可以直接執行相關的 JavaScript 來完成邏輯處理和接口請求,比如使用Selenium、PyExecJS、PyV8、js2py 等庫來完成即可。
  • ?

    ?

    App 爬取

    ?

    對于 App 的爬取,這里分了四個處理情況:

  • 對于普通無加密接口,這種直接抓包拿到接口的具體請求形式就好了,可用的抓包工具有 Charles、Fiddler、mitmproxy。
  • 對于加密參數的接口,一種方法可以實時處理,例如 Fiddler、mitmdump、Xposed 等,另一種方法是將加密邏輯破解,直接模擬構造即可,可能需要一些反編譯的技巧。
  • 對于加密內容的接口,即接口返回結果完全看不懂是什么東西,可以使用可見即可爬的工具 Appium,也可以使用 Xposed 來 hook 獲取渲染結果,也可以通過反編譯和改寫手機底層來實現破解。
  • 對于非常規協議,可以使用 Wireshark 來抓取所有協議的包,或者使用 Tcpdump 來進行 TCP 數據包截獲。
  • 以上便是爬取流程的相關分類和對應的處理方法。

    ?

    ?

    ?

    解析

    ?

    對于解析來說,對于 HTML 類型的頁面來說,常用的解析方法其實無非那么幾種,正則、XPath、CSS Selector,另外對于某些接口,常見的可能就是 JSON、XML 類型,使用對應的庫進行處理即可。

    這些規則和解析方法其實寫起來是很繁瑣的,如果我們要爬上萬個網站,如果每個網站都去寫對應的規則,那么不就太累了嗎?所以智能解析便是一個需求。

    智能解析意思就是說,如果能提供一個頁面,算法可以自動來提取頁面的標題、正文、日期等內容,同時把無用的信息給刨除,例如上圖,這是 Safari 中自帶的閱讀模式自動解析的結果。

    ?

    對于智能解析,下面分為四個方法進行了劃分:

  • readability 算法,這個算法定義了不同區塊的不同標注集合,通過權重計算來得到最可能的區塊位置。
  • 疏密度判斷,計算單位個數區塊內的平均文本內容長度,根據疏密程度來大致區分。
  • Scrapyly 自學習,是 Scrapy 開發的組件,指定也頁頁面和提取結果樣例,其可自學習提取規則,提取其他同類頁頁面。
  • 深度學習,使?用深度學習來對解析位置進?行行有監督學習,需要?大量量標注數據。
  • 如果能夠容忍一定的錯誤率,可以使用智能解析來大大節省時間。目前這部分內容我也還在探索中,準確率有待繼續提高。

    ?

    ?

    ?

    存儲

    ?

    存儲,即選用合適的存儲媒介來存儲爬取到的結果,這里還是分為四種存儲方式來進行介紹。

  • 文件,如 JSON、CSV、TXT、圖?、視頻、?頻等,常用的一些庫有 csv、xlwt、json、pandas、pickle、python-docx 等。
  • 數據庫,分為關系型數據庫、非關系型數據庫,如 MySQL、MongoDB、HBase 等,常用的庫有 pymysql、pymssql、redis-py、pymongo、py2neo、thrift。
  • 搜索引擎,如 Solr、ElasticSearch 等,便于檢索和實現?本匹配,常用的庫有 elasticsearch、pysolr 等。
  • 云存儲,某些媒體文件可以存到如七?牛云、又拍云、阿里云、騰訊云、Amazon S3 等,常用的庫有 qiniu、upyun、boto、azure-storage、google-cloud-storage 等。
  • 這部分的關鍵在于和實際業務相結合,看看選用哪種方式更可以應對業務需求。

    ?

    ?

    ?

    反爬

    ?

    反爬這部分是個重點,爬蟲現在已經越來越難了,非常多的網站已經添加了各種反爬措施,在這里可以分為非瀏覽器檢測、封 IP、驗證碼、封賬號、字體反爬等。

    ?

    下面主要從封 IP、驗證碼、封賬號三個方面來闡述反爬的處理手段。

    ?

    ?

    反爬 / 封 IP

    ?

    對于封 IP 的情況,可以分為幾種情況來處理:

  • 首先尋找手機站點、App 站點,如果存在此類站點,反爬會相對較弱。
  • 使用代理,如抓取免費代理、購買付費代理、使用 Tor 代理、Socks 代理等。
  • 在代理的基礎上維護自己的代理池,防止代理浪費,保證實時可用。
  • 搭建 ADSL 撥號代理,穩定高效。
  • ?

    ?

    反爬 / 驗證碼

    ?

    驗證碼分為非常多種,如 普通圖形驗證碼、算術題驗證碼、滑動驗證碼、點觸驗證碼、手機驗證碼、掃二維碼?等。

  • 對于普通圖形驗證碼,如果非常規整且沒有變形或干擾,可以使用 OCR 識別,也可以使用機器學習、深度學習來進行模型訓練,當然打碼平臺是最方便的方式。
  • 對于算術題驗證碼,推薦直接使用打碼平臺。
  • 對于滑動驗證碼,可以使用破解算法,也可以模擬滑動。后者的關鍵在于缺口的找尋,可以使用圖片比對,也可以寫基本的圖形識別算法,也可以對接打碼平臺,也可以使用深度學習訓練識別接口。
  • 對于點觸驗證碼,推薦使用打碼平臺。
  • 對于手機驗證碼,可以使用驗證碼分發平臺,也可以購買專門的收碼設備,也可以人工驗證。
  • 對于掃二維碼,可以人工掃碼,也可以對接打碼平臺。
  • ?

    ?

    反爬 / 封賬號

    ?

    某些網站需要登錄才能爬取,但是一個賬號登錄之后請求過于頻繁會被封號,為了避免封號,可以采取如下措施:

  • 尋找 手機站點 或 App 站點,此種類別通常是接口形式,校驗較弱。
  • 尋找 無登錄接口,盡可能尋找?無需登錄即可爬取的接口。
  • 維護 Cookies 池,使?用批量賬號模擬登錄,使?時隨機挑選可用 Cookies 使?即可,實現:https://github.com/Python3WebSpider/CookiesPool。
  • 進群:548377875? 即可獲取大量的PDF!希望大家早日入門!

    ?

    ?

    ?

    加速

    ?

    當爬取的數據量非常大時,如何高效快速地進行數據抓取是關鍵。

    常見的措施有?多線程、多進程、異步(協程)、分布式、細節優化等。

    ?

    ?

    加速 / 多線程、多進程

    ?

    爬蟲是網絡請求密集型任務,所以使用多進程和多線程可以大大提高抓取效率,如使用 threading、multiprocessing 等。

    ?

    ?

    加速 / 異步

    ?

    將爬取過程改成非阻塞形式,當有響應式再進行處理,否則在等待時間內可以運行其他任務,如使用 asyncio、aiohttp、Tornado、Twisted、gevent、grequests、pyppeteer、pyspider、Scrapy 等。

    ?

    ?

    加速 / 分布式

    ?

    分布式的關鍵在于共享爬取隊列,可以使用 celery、huey、rq、rabbitmq、kafka 等來實現任務隊列的對接,也可以使用現成的框架 pyspider、Scrapy-Redis、Scrapy-Cluster 等。

    ?

    ?

    加速 / 優化

    ?

    可以采取某些優化措施來實現爬取的加速,如:

    DNS 緩存

    使用更快的解析方法

    使用更高效的去重方法

    模塊分離化管控

    ?

    ?

    加速 / 架構

    ?

    如果搭建了分布式,要實現高效的爬取和管理調度、監控等操作,我們可以使用兩種架構來維護我們的爬蟲項目。

    將 Scrapy 項目打包為 Docker 鏡像,使用 K8S 控制調度過程。

    將 Scrapy 項目部署到 Scrapyd,使用專用的管理工具如 SpiderKeeper、Gerapy 等管理。

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的网络爬虫干货总结!的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 免费播放黄色片 | 欧美日韩性生活视频 | 午夜福利视频一区二区 | 中文字字幕在线中文乱码电影 | 99热r| 中文字幕在线免费看 | 金瓶狂野欧美性猛交xxxx | 波多野结衣高清电影 | 九七av| 美女被出白浆 | 欧美日韩国语 | 少妇情理伦片丰满午夜在线观看 | 亚洲一区二区免费电影 | 日韩一区二区三区视频 | 亚洲精品a| 天天摸夜夜 | 99热在线观看| 亚洲精品日日夜夜 | 日本高清在线一区 | 九草av| 丰满少妇被猛烈进入 | 波多野结衣导航 | 91麻豆视频在线观看 | 38在线视频 | 日韩在线播放视频 | 日韩三级视频在线播放 | 久久在线精品视频 | 人妻少妇久久中文字幕 | 亚洲综合涩 | 亚洲精品视频播放 | 国产伦精品一区二区三区四区视频 | 痴女扩张宫交脱垂重口小说 | 欧美极品jizzhd欧美仙踪林 | 精品人妻一区二区色欲产成人 | 一级a性色生活片久久无 | 精品少妇一区二区 | 青青草在线免费 | 中文毛片无遮挡高潮免费 | 欧美日国产 | 51精产品一区一区三区 | 国产精品丝袜视频 | 一区二区精品在线 | 国产探花视频在线观看 | 欧美一区二区三区久久精品 | 菊肠扩张playh | 国产人与禽zoz0性伦 | 亚洲天堂一区二区三区 | 好男人www在线视频 我们的2018在线观看免费高清 | 久久久久久久久久一级 | 91抖音在线观看 | 黄色片免费的 | 午夜视频在线 | 波多野结衣潜藏淫欲 | 免费超碰在线观看 | 国产视频不卡一区 | 色偷偷免费费视频在线 | 国产欧美精品久久久 | 第一章婶婶的性事 | 又黄又爽的免费视频 | 浮生影视在线观看免费 | www.色图| 亚洲熟女综合色一区二区三区 | 久久亚洲AV成人无码一二三 | 国产精品成人va在线观看 | 亚洲天天做 | 51人人看 | 国产免费91视频 | 色欲久久久天天天综合网 | 精品三级电影 | 中文字幕33页| 三级亚洲 | 日韩在线第三页 | 奇米成人 | 九九九国产 | 18禁裸乳无遮挡啪啪无码免费 | 国语久久| 三级黄色视屏 | 久久我不卡 | www.亚洲免费| 午夜影院在线 | 成年人视频在线免费看 | 国产精品白丝喷水在线观看 | 欧美一区 | 成年人黄色大全 | 色翁荡息又大又硬又粗又爽 | 污视频网站免费 | 欧美激情另类 | 亚洲三级小说 | 美女黄色小视频 | 麻豆出品 | 美女被出白浆 | 超碰色人阁 | 麻豆国产精品视频 | 69国产成人精品二区 | 邻家有女4完整版电影观看 欧美偷拍另类 | 精品国产高清在线观看 | 欧美成人a交片免费看 | 精品不卡一区二区三区 | 粉嫩小泬无遮挡久久久久久 |