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

SAP剑客 2021-10-29 06:32:21
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://saper.blog.csdn.net/article/details/121023918

  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