首页 > 其他分享 >爬虫01

爬虫01

时间:2022-09-06 16:23:07浏览次数:63  
标签:01 浏览器 请求 爬虫 html 服务器 数据 客户端

爬虫

通过编写程序来获取互联网资源


需求:用程序模拟浏览器,输入一个网址,从该网址中获取到资源或者内容

python搞定以上需求

  1. 导包 from urllib.request import urlopen

    2.写url

  2. urlopen这个网址

  3. 返回得到内容

web请求过程剖析

两种渲染方式:

  • 服务器渲染: 在服务器那边直接把数据和html整合一起,统一返回给浏览器(即服务器收到的一定是带有内容的html)(数据能在源代码中找到的就是服务器渲染)

  • 客户端渲染: 所用的浏览器即为客户端,第一次请求只要了一个html骨架,第二次请求拿到数据,然后进行数据展示。在页面源代码中看不到数据

    客户端向服务器发送网页请求,服务器会返回一个html骨架,就是只给了一个网页,里面没有内容,这时候客户端再次请求要数据,服务器返回数据,然后客户端接收数据后将该数据与骨架拼接。

HTTP协议

超文本传输协议,直白点,传输的就是网页页面源代码,浏览器和服务器之间的数据交互遵守的就是HTTP协议

HTTP在发送和得到数据分为请求和响应两大块

请求:1.请求行 (请求方式(get/post)、请求URL地址、协议)

  1. 请求头 (放一些服务器要使用的附加信息)
  2. 请求体(放请求参数)

响应: 1.状态行(协议、状态码(200 302 500 404等))

2.响应头 (放一些客户端要使用的附加信息)

3.响应体(服务器返回的真正客户端要用的内容(html、json)等)

写爬虫格外注意请求头和响应头,这两个部分一般隐含较为重要的内容

请求头中常见重要内容:

  • User-Agent :请求载体的身份标识(浏览器,用什么浏览器发送的请求)
  • Refer:防盗链(这次请求是从哪个页面来的,反爬会用到)
  • cookie:本地字符串数据信息(用户登录信息,反爬的token)

响应头中常见重要内容:

  • cookie:本地字符串数据信息(用户登录信息,反爬的token)
  • 各种神奇的莫名其妙的字符串(一般都是token字样,放置各种攻击和反爬)

请求方式:

GET 显示提交: 查询东西用get居多 在浏览器地址栏里头的都是get方式提交的

POST 隐示提交:对服务器内容增加修改,上传一些内容用post居多


# 入门超小爬虫
from urllib.request import urlopen

url = "http://www.baidu.com"
response = urlopen(url)


with open("mybaidu.html", mode="w", encoding="utf-8") as f:
    f.write(response.read().decode("utf-8"))  # decode解码 读取到网页的页面源代码
print("over")

标签:01,浏览器,请求,爬虫,html,服务器,数据,客户端
From: https://www.cnblogs.com/aowei/p/16662233.html

相关文章

  • ASP.NET Core 01基础知识概述
    Program.cs使用Web模板创建的ASP.NETCore应用包含Program.cs文件中的应用程序启动代码。Program.cs文件中包含:已配置应用所需的服务。应用的请求处理管道定义......
  • 代码笔记24 windows+opencv4.5.5安装中出现的IPPICV: Download: ippicv_2020_win_inte
    1环境介绍:windows10,visualstudio2019,CMake,OPENCV4.5.5出现问题IPPICV:Download:ippicv_2020_win_intel64_20191018_general.zipTry1failedCMakeWarninga......
  • 01-linux基础命令
    1、常用命令常用Linux命令的基本使用序号命令对应英文作用01lslist查看当前目录下的内容02pwdprintworkingderectory查看当前所在文件夹03cd[目录......
  • [极客大挑战 2019]Upload 1
    进入可以看到,这时一道文件上传题目直接上传test.php提示Notimage不是图片,可能是MIME绕过,尝试抓包修改Content-Type提示Notphp,猜测可能是检测后缀名不能是php,将te......
  • Day01初识HTML
    HTML+CSS+JavaScript结构+表现+交互重点:1.表单及表单应用​1.表单初级验证什么是HTMLHyperTextMarkupLanguage(超文本语言)超文本包括:文字,......
  • 第二章节 控制流 01 scanner和m=m++的问题
    第二章节控制流01scanner和m=m++的问题用户交互Scanner(扫描器)用完就要关掉I/O流会占用很多资源需要创建Scanner对象Scannerscanner=newScanner(System.in);通......
  • I [NOIP2012]开车旅行 每次往第一或者第二近的点走,求最大比值 倍增算法 set
    链接:https://ac.nowcoder.com/acm/problem/16562来源:牛客网题目描述小A和小B决定利用假期外出旅行,他们将想去的城市从1到N编号,且编号较......
  • Java项目实战-瑞吉外卖day01
    瑞吉外卖开发笔记 笔记内容为黑马程序员视频内容1、软件开发整体介绍软件开发流程角色分工软件环境  2、瑞奇外卖项目介绍项目介绍 ......
  • P5664[CSP-S2019] Emiya 家今天的饭 (dp + 计数)
     P5664[CSP-S2019]Emiya家今天的饭(dp+计数)题目传送门题目大意:给定一个大小为\(n*m\)的表格,其中\(a_{i,j}\)表示用第\(i\)种烹饪方式并且有第\(j\)......
  • [极客大挑战 2019]LoveSQL 1
    很明显这时一道SQL注入的题目这题很简单的SQL注入题目,使用union(联合查询注入),但是缠了我很久为什么呢?因为我们学校的waf,很多可以注入成功的语句,他都会连接被重置,或者被b......