【Python 爬蟲】 4、爬蟲基本原理

SAP劍客 2021-10-29 06:34:18
python 基本原理 基本 本原 原理

爬蟲基本原理

爬蟲的基本流程

1、獲取網頁源代碼:通過請求庫實現,urllib,requests等實現HTTP請求;

2、提取信息:分析網頁源代碼,提取數據,如正則錶達式,beautiful soup,pyquery,Ixml等;

3、保存數據:保存至txt,json或數據庫;

抓什麼數據

  • HTML代碼;
  • Json字符串(api接口,手機端大部分是這種數據格式);
  • 二進制文件(圖片,音頻,視頻等);
  • 各種擴展名的文件(css,Javascript,各種配置文件等);

Javascript渲染頁面

用urllib或者requests抓取網頁的時候,得到的源代碼和瀏覽器中看到的不一樣。

越來越多的網頁采用ajax、前端模塊化工具來構建,整個網頁都是Javascript渲染出來的。需要分析ajax接口,或者使用selenium等庫實現模擬Javascript渲染。

【頁面渲染】

頁面渲染就是瀏覽器的渲染引擎將HTML代碼根據CSS定義的規則顯示在瀏覽器窗口中的過程。

大致工作原理如下:

  • 用戶輸入網址,瀏覽器向服務器發出請求,服務器返回html文件;
  • 渲染引擎開始載入html代碼,並將HTML中的標簽轉化為DOM節點,生成DOM樹;
  • 如果引用了外部CSS文件,則發出CSS文件請求,服務器返回該文件;
  • 如果引用了外部JS文件,則發出JS文件請求,服務器返回該文件後開始運行;
  • 渲染引擎繼續載入html中的部分的代碼,並開始解析前面返回的CSS文件,然後根據CSS選擇器計算出節點的樣式,創建渲染樹;
  • 從根節點遞歸調用,計算每一個元素的大小、比特置等,給每個節點所應該出現在屏幕上的精確坐標;
  • 如果body中的引用了圖片資源,則立即向服務器發出請求,此時渲染引擎不會等待圖片下載完畢,而是繼續渲染後面的代碼;
  • 服務器返回圖片文件,由於圖片占用了一定面積,影響了後面段落的排版,因此引擎需要回過頭來重新渲染這部分代碼;
  • 如果此時JS脚本中運行了style.display=”none”, 布局被改變,引擎也需要重新渲染這部分代碼;
  • 直到頁面渲染完畢。

cookies

cookies在瀏覽器端,在訪問動態網頁時候瀏覽器會自動附帶上它並發送給服務器,服務器通過識別cookies並鑒定其是哪個用戶,判斷其是否登錄狀態,然後返回對應的響應。

爬蟲代理

代理網絡用戶去取得網絡信息;

代理的作用:突破自身IP訪問限制,訪問團體內部資源,提高訪問速度,隱藏真實IP;

爬蟲代理可以獲得較好的爬取效果(防止被封禁或者輸入驗證碼登錄);

檢查robots.txt

Robots協議(也稱之為爬蟲協議、機器人協議等)的全稱是“網絡爬蟲排除標准”(Robots Exclusion Protocol),網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。

當一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜索機器人就會按照該文件中的內容來確定訪問的範圍;如果該文件不存在,所有的搜索蜘蛛將能够訪問網站上的所有沒有被口令保護的頁面。

 

爬蟲的攻與防

 

版权声明
本文为[SAP劍客]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/10/20211029063157198G.html

  1. Python,前缀后缀相同时合并
  2. 关于#python#的问题:python
  3. 關於#python#的問題:python
  4. Python,前綴後綴相同時合並
  5. Questions sur # # Python #: Python
  6. Python, préfixe et suffixe combinés en même temps
  7. python manage.py shell无法运行,
  8. python manage.py shell無法運行,
  9. Le shell Python manage.py ne fonctionne pas,
  10. python中使用vscode Import 'matplotlib.pyplot' could not be resolved from source 问题
  11. [Chapter 11 of the full version] Python advanced crawler practice - system master Po anti climbing skills challenge high salary
  12. L'utilisation de vscode Import 'matplotlib.pyplot' en python ne peut pas être résolue à partir du problème source
  13. Python fusionne les deux listes et supprime les éléments dupliqués lors de la fusion
  14. [JS Reverse AES Reverse Encryption] python crawler combat, les jours sont de plus en plus décisifs
  15. 30 jeux Python. Je peux jouer à la pêche au travail pendant une journée.
  16. J'a i collecté un nouveau hit de liste en python, donc c'est un secret que quelqu'un d'autre peut devenir un magnat des médias!
  17. J'a i utilisé Python pour ramper à travers 5000 belles photos de papier peint, un jour oublié Premier amour!
  18. [Python planting system] the best green plant for your girlfriend. Girls love it when they see it! Attachment: should be able to feed - right??!
  19. [Python love guide] two small programs for sweetness burst table are released! Afraid you can't find someone?
  20. J'ai utilisé Python pour ramper 1000 lettres d'amour pour aider mon colocataire à exprimer les fleurs de classe, mais les inverser et les inverser... C'est le secret ultime des fleurs de classe!
  21. J'ai utilisé Python pour me connecter à la plus grande plate - forme de jeu au monde, et à quel point le cryptage steam est intelligent [code source inclus]
  22. python中列表转为矩阵后无法进行矩阵的乘法运算
  23. Python crawler Development and Learning full tutoriel 2nd Edition, banggan 100000 words [recommended Collection]
  24. Python crawler haut de gamme: microstore confus anti - décryptage
  25. La multiplication de la matrice ne peut pas être effectuée lorsque la liste est convertie en matrice en python
  26. Introduction to operators in python (Part 1)
  27. Are the dictionaries in Python ordered
  28. Introduction to dictionaries in Python
  29. List introduction in Python
  30. pandas比较两个dataframe特定数据列的数值是否相同并给出差值:使用np.where函数
  31. Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)
  32. Python self study notes -- basic grammar
  33. Python utilise matplotlib pour dessiner une image visuelle de l'arrière - plan transparent et enregistrer les résultats visuels de l'arrière - plan transparent
  34. Pandas compare les valeurs de deux colonnes de données spécifiques à dataframe et donne des valeurs de voyage: en utilisant la fonction np.where
  35. Comment configurer une application ASGI Django avec Postgres, nginx et uvicorn sur Ubuntu 20.04
  36. What are the advantages of Python and how to get started quickly
  37. Python self study notes -- basic data types
  38. Python code reading (Chapter 14): List Union
  39. Analyse statistique de la fonction de données des essais aléatoires Python
  40. Alien invasion project in Python application -- Aliens (Part 2)
  41. Python code reading (Chapter 14): List Union
  42. Lecture du Code Python (article 25): diviser les chaînes multilignes en listes
  43. Python self study notes -- operators
  44. Formation python - différences entre http et HTTPS
  45. Implementation of automatic timing comment function on Python CSDN platform
  46. python+tkinter+treeview子控件快捷键
  47. Raccourcis clavier pour les sous - contrôles Python + tkinter + treeview
  48. Analyse des données Python
  49. python+tkinter+treeview子控件快捷鍵
  50. Devine si je peux attraper Maotai avec la programmation python? Tout est ouvert à github
  51. À propos de pygame.display.set in Python Un petit problème avec mode ()
  52. Implementation of automatic timing comment function on Python CSDN platform
  53. python:dataframe进行iteritem遍历时如何将输出结果按照列分别输出为该列最后一行
  54. python:dataframe進行iteritem遍曆時如何將輸出結果按照列分別輸出為該列最後一行
  55. Python: comment le dataframe affiche les résultats de sortie par colonne à la dernière ligne de la colonne lors de la traversée de l'itemitem
  56. Écrivez un gadget de bureau pour votre fille préférée en python et elle dit que c'est génial!
  57. Introduction to closures in Python 3
  58. Global / nonlocal usage in Python 3
  59. Introduction to context manager in Python 3
  60. Common standard library random, python introductory tutorial 5 or 6 questions a day | Python skill tree