当前位置: 首页 > news >正文

01、爬虫学习入门

爬虫:通过编写程序,来获取获取互联网上的资源

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

一、入门程序
#使用urlopen来进行爬取
from urllib.request import urlopen
url = "http://www.baidu.com"
resp = urlopen(url)
# print(resp.read().decode("utf-8"))
with open("mybaidu.html",mode="w",encoding="utf-8") as f:f.write(resp.read().decode("utf-8"))
print("over")
二、web请求过程剖析
1、服务器渲染

在服务器那边直接把数据和html聚合在一起,统一返回给浏览器。

直观的现象就是查看网页源代码能拿到所有的页面内容。

eg:https://www.douban.com/note/809408645/?_i=2050824ZzQJI3Y

2、客户端渲染

第一次请求只拿到html骨架,第二次请求拿到数据,然后客户端进行渲染。

直观的现象就是查看网页源代码看不到数据。

因此想要看到从哪个请求拿到的数据,要熟练使用抓包工具。 

eg:https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=

三、HTTP协议

协议就是两个计算机之间为了能够流畅的进行沟通而设置的一个君子协议,常见的协议有TCP/IP,SOAP协议,SMTP协议.....

HTTP协议就是超文本协议,作用为浏览器和服务器之间的数据交互遵守的协议

1、请求:

(1)请求行:请求方式(get/post),请求url地址,协议

(2)请求头:放一些服务器使用的附加信息。例如请求从哪来的,或者一些反爬信息

(3)请求体:请求参数

 2、响应

(1)状态行:协议 状态码

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

(3)响应体:服务器返回的真正客户端要用的内容(HTML,JSON)等

 3、请求头中最常见的一些重要内容(爬虫需要)

(1)User-Agent:请求载体的身份标识(用啥发送的请求)

(2)Refere:防盗链(这次请求是从哪个页面来的?反爬会用到)

(3)cookie:本地字符串数据信息(用户登录信息,反爬的token)

4、响应头中一些重要的内容

(1)cookie:本地字符串数据信息(用户登录信息,反爬的token)

(2)各种神奇的莫名其妙的字符串(这个需要经验了,一般是token字样,防止各种攻击和反爬)

5、常见的请求方式

GET:查询东西的时候。所有在地址栏输入的url都是get请求

POST:上传一些内容/对服务器的内容进行更改 

四、Requests入门

安装:pip install requests

需求1、爬取搜狗页面搜索薛之谦得到的页面内容

此处添加User-Agent处理一个简单的反爬

import requests
url = 'https://www.sogou.com/web?query=%E8%96%9B%E4%B9%8B%E8%B0%A6'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
}
# 所有在地址栏输入的url都是get请求
resp = requests.get(url, headers=headers)
print(resp)
print(resp.text) #拿到页面源代码
resp.close()

需求2、拿到百度翻译联想词(post)

经过查看抓包,发现这个请求为https://fanyi.baidu.com/sug 

import requests
url = 'https://fanyi.baidu.com/sug'
s = input("输入你要翻译的英文单词")
data = {"kw": s
}
#发送post请求,发送的数据必须放在字典中,通过data进行传递
resp = requests.post(url,data=data)
print(resp.json())#将服务器返回的内容直接处理为json() =>python中的字典

 需求3、拿到豆瓣排行榜的数据(在第二次请求中返回数据)(get)

客户端渲染返回的数据一般在xhr中,可以进行筛选。

import requests
url = "https://movie.douban.com/j/chart/top_list"
#参数很长的时候可以扔到字典里,重新封装参数
param ={"type": "24","interval_id": "100:90","action": "","start":"0","limit": "20"
}
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
}
resp = requests.get(url=url,params=param,headers=headers)
print(resp.request.url)
print(resp.json())
resp.close()

相关文章:

01、爬虫学习入门

爬虫:通过编写程序,来获取获取互联网上的资源 需求:用程序模拟浏览器,输入一个网址,从该网址获取到资源或内容 一、入门程序 #使用urlopen来进行爬取 from urllib.request import urlopen url "http://www.ba…...

我与C语言二周目邂逅vlog——6.文件操作

1. 为什么使⽤⽂件? 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久…...

Hugo 部署与自动更新(Git)

文章目录 Nginx部署Hugonginx.confhugo.conf Hugo自动更新Hugo自动更新流程添加访问令牌添加web hookrust实现自动更新接口 Nginx部署Hugo nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;even…...

HTTP代理揭秘:这些场景你都用对了吗?

HTTP代理是网络中常见的一种工具,可以帮助我们提升网络安全性和隐私保护,优化网络访问速度。本文将详细介绍什么是HTTP代理及其适用的场景。 HTTP代理是介于客户端(如浏览器)和服务器之间的中间服务器。它接收客户端的HTTP请求&a…...

电动汽车充电技术及运营知识问答pdf

电动汽车充电技术及运营知识问答 作者:马银山编著 出版社:北京:中国电力出版社 ISBN:9787512320406 资源大小:16.99MB 目录: http://literalink.top/resource/detail/7181601144102195200 第一章 电动汽车基本知识 1 1-1什么是电动汽车? 11-…...

playbooks 分布式部署 LNMP

1、环境配置 ansible 服务器 192.168.10.10nginx 服务器 192.168.10.20mysql 服务器 192.168.10.21php 服务器 192.168.10.22 2、安装 ansble #192.168.10.10节点 yum install -y epel-release #先安装 epel 源 yum install -y ansible配置主机清单 …...

成为git砖家(8): 使用 git log 查询范围内的 commit

文章目录 1. 查询 git log 的文档2. 不带任何参数: git log 啥意思&#xff1f;3. git log 最主要功能是什么&#xff1f;4. git log <commit1>..<commit2> 什么意思5. 查看最近n次commit6. References 1. 查询 git log 的文档 git help log --web市面上针对 git …...

Win10出现错误代码0x80004005 一键修复指南

对于 Windows 10 用户来说&#xff0c;错误代码 0x80004005 就是这样一种迷雾&#xff0c;它可能在不经意间出现&#xff0c;阻碍我们顺畅地使用电脑。这个错误通常与组件或元素的缺失有关&#xff0c;它可能源自注册表的错误、系统文件的损坏&#xff0c;或者是软件的不兼容。…...

C++ 基础(类和对象下)

目录 一. 再探构造函数 1.1. 初始化列表&#xff08;尽量使用列表初始化&#xff09; 二. static成员 2.1static成员初始化 三.友元 3.1友元&#xff1a;提供了⼀种 突破类访问限定符封装的方式. 四.内部类 4.1如果⼀个类定义在另⼀个类的内部&#xff0c;这个内部类就叫…...

java RestClientBuilder es 集群 鉴权

在Java中使用RestClientBuilder连接到Elasticsearch集群并进行鉴权&#xff0c;可以通过设置HttpHosts、RequestConfig以及添加相应的Header来实现。 以下是一个示例代码&#xff1a; import org.apache.http.Header; import org.apache.http.HttpHost; import org.apache.htt…...

【OpenCV】中saturate_cast<uchar>的含义和用法是什么?

saturate_cast<uchar>主要是为了防止颜色溢出操作&#xff08;0~255&#xff09; if(data<0) data0; elseif(data>255) data255;...

【数据结构】哈希表二叉搜索树详解

&#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f341;1. 二叉搜索树 二叉搜索树也称为二叉查找树或二叉排序树&#xff0c;是一种特殊的二叉树结构&#xff0c;它的特点是&#xff1a; 1. 若左树不为空&am…...

【SpringBoot】参数传递之@ModelAttribute

ModelAttribute标注的方法会在Controller类的每个映射URL的控制执行方法之前执行。 ModelAttribute public void findUserById(PathVariable("userId") Long userId,Model model){ model.addAttribute("user",userService.findUserById(userId)); } GetM…...

frp搭建ssh内网穿透

frp软件包下载 检查外网服务器架构 uname -i官网下载对应的版本 https://github.com/fatedier/frp/releases 使用wget或拷贝文件到外网服务器/opt目录下并解压 解压得到frp_0.59.0_linux_amd64文件夹 tar -zxvf frp_0.59.0_linux_amd64.tar.gzfrpc 这是 frp 的客户端可执…...

OpenCV库学习之cv2.normalize函数

OpenCV库学习之cv2.normalize函数 一、简介 cv2.normalize是OpenCV库中的一个函数&#xff0c;用于对图像进行归一化处理。归一化是一种线性变换&#xff0c;可以将图像像素值的范围缩放到指定的区间。这种操作在图像处理中非常有用&#xff0c;特别是在需要将图像数据用于某些…...

LINUX操作系统安全

一、概述内容 操作系统负责计算机系统的资产管理&#xff0c;支撑和控制各种应用程序运行&#xff0c;为用户提供管理计算机系统管理接口。操作系统也是构成网络信息系统的核心关键组件&#xff0c;其安全可靠性决定了计算机系统的安全性和可靠性。 操作系统安全是指满足安全…...

vue3.0学习笔记(三)——计算属性、监听器、ref属性、组件通信

1. computed 函数 定义计算属性&#xff1a; computed 函数&#xff0c;是用来定义计算属性的&#xff0c;计算属性不能修改。 计算属性应该是只读的&#xff0c;特殊情况可以配置 get set 核心步骤&#xff1a; 导入 computed 函数 执行函数 在回调参数中 return 基于响应…...

Elasticsearch面试三道题

针对Elasticsearch的面试题&#xff0c;从简单到困难&#xff0c;我可以给出以下三道题目&#xff1a; 1. Elasticsearch的基本概念与优势 问题&#xff1a;请简要介绍Elasticsearch是什么&#xff0c;并说明它相比传统数据库的优势有哪些&#xff1f; 答案&#xff1a; El…...

大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新)

目录 Linux 系统调用的过程,中间发生了什么? 表格总结 Linux 中断流程,谈谈你对中断上下文的理解 中断流程 中断上下文理解 Linux schedule() 函数的原理和调用的时机 schedule() 函数原理 调用时机 页表实现机制,分页的缺点? 页表机制 分页的缺点 介绍操作系…...

数据结构【有头双向链表】

目录 实现双向链表 双向链表数据 创建双向链表 初始化双向链表创建&#xff08;哨兵位&#xff09; 尾插 打印双向链表 头插 布尔类型 尾删 头删 查询 指定位置后插入 指定位置删除数据 销毁 顺序表和链表的分析 代码 list.h list.c test.c 注意&#xff1a…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...