欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

手把手带你入门Python爬虫(爬虫预备知识)

程序员文章站 2022-03-11 09:11:34
爬虫预备知识一、计算机网络协议基础二、Html、Css、JavascriptAjax 异步加载GET请求 与 POST请求3种content-type三、爬虫基本方法1. 采集方案分类2. requests库3. 正则表达式4. beautifulsoup用法5. xpath基本语法6. css选择器提取元素一、计算机网络协议基础一个完整的网络请求过程如下:在浏览器输入域名后,浏览器先访问DNS服务器,DNS返回ip给浏览器,然后浏览器与web服务器建立TCP连接,浏览器就可以发送http请求,we...

一、计算机网络协议基础

一个完整的网络请求过程如下:
手把手带你入门Python爬虫(爬虫预备知识)
在浏览器输入域名后,浏览器先访问DNS服务器,DNS返回ip给浏览器,然后浏览器与web服务器建立TCP连接,浏览器就可以发送http请求,web服务器返回数据到浏览器,接下来就是浏览器解析内容的步骤。

七层网络协议:

  • 应用层 Http、ftp、pop3、DNS
  • 表示层
  • 会话层
  • 传输层 TCP、UDP
  • 网络层 ICMP、IP、IDMP
  • 数据链路层 ARP、RARP
  • 物理层 物理传输介质

二、Html、Css、Javascript

网页三要素:Html、Css、Javascript
Html是承载网页内容的骨骼;
Css是网页的样式;
Javascript是网页运行的脚本;

我们需要爬虫的内容一般为网页的部分HTML的内容,所以说可见即可得,只要在页面上看得到的我们就可以爬到。

浏览器的加载过程:
构建DOM树—子资源加载(加载外部的css、js、图片等外部资源)—样式渲染(css执行)

查找页面元素一般通过DOM树来查找:
手把手带你入门Python爬虫(爬虫预备知识)

Ajax 异步加载

有的数据是通过js向服务器发送请求,返回数据将数据通过js动态插入到页面的,这种方式不会刷新页面,用户体验效果好。
ajax返回的数据又可能是json格式,也可以是html页面部分。

动态网页和静态网页:
动态:数据是与后台有交互的,可以变的(ajax)
静态:数据不可变的(如果要变需要修改源代码)

动态网页体验好,局部加载,对服务器好,扩展性好
静态网页有利于SEO

GET请求 与 POST请求

GET参数包含在URL中,POST通过request body 传递参数。

  1. GET在浏览器回退时是无害的,而POST会再次提交请求
  2. GET请求只能进行url编码,而POST支持多种编码方式
  3. GET请求在URL中传送的参数是有长度限制的,而POST没有
  4. GET比POST更不安全,因为参数直接暴露在URL上,所以不能传递敏感信息

3种content-type

  1. application/x-www-form-urlencoded
    POST提交数据,浏览器原生form表单,如果不设置enctype属性,那么最终就会以application/x-www-form-urlencoded方式提交数据。提交的数据按照key1=val1&key2=val2的方式进行编码,key和val都进行了URL转码。

  2. multipart/form-data
    表单上传文件。

  3. application/json
    告诉服务器消息主体是序列化后的JSON字符串。

三、爬虫基本方法

1. 采集方案分类

一般我们采集网站只采集需要的指定的数据,采集方案分类:

  1. 利用http协议采集 - 页面分析
  2. 利用api接口采集 - app数据采集
  3. 利用目标网站的api采集 - 微博、github

2. requests库

官方文档地址:https://requests.readthedocs.io/zh_CN/latest/
安装:

pip install requests

如果使用了虚拟环境,请确保在虚拟环境再安装一遍,保证使用了虚拟环境的项目正常运行

初探,爬一下百度页面:

import requests

res = requests.get("http://www.baidu.com")
print(res.text)

百度页面的html代码就打印出来了:
手把手带你入门Python爬虫(爬虫预备知识)
后面具体项目再详细介绍具体用法。

3. 正则表达式

4. beautifulsoup用法

5. xpath基本语法

6. css选择器提取元素

本文地址:https://blog.csdn.net/zy1281539626/article/details/111144236