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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387361.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我们的网站被狗爬了!

大家好,我是程序员鱼皮。 世风日下,人心不古。我们的程序员面试刷题网站 《面试鸭》 才刚刚上线了一个多月,就由于过于火爆,被不少同行和小人发起网络攻击。 而且因为我们已经有 4500 多道人工整理的企业高频面试题、100 多个各…

【JavaScript】函数的动态传参

Javacript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言&…

第六周:机器学习周报

机器学习周报 摘要Abstract机器学习——类神经网络训练不起来怎么办?1. 自动调整学习率(learning rate)1.1 特制化的Learning Rate——parameter dependent1.1.1 Root Mean Square(RMS,均方根)1.1.2 RMSPro…

Qt Creator使用git管理代码

1.在GitHub中新建仓库,设置好仓库名后,其它的设置默认即可。 2.打开git bash,输入以下命令: git config --global user.name "xxxxx" #设置你的GitHub用户名 git config --global user.email "xxxxxxxxx.…

DMB,DSB,ISB三个指令区别

此部分说明三个指令的具体区别(在指令流水线上说明),这三个指令主要目的在于确保程序在多处理器环境下的稳定性和一致性,避免由于指令乱序和内存操作重排引起的不可预测行为 一个简化的流水线,包含以下阶段&#xff1…

[Docker][Docker Registry]详细讲解

目录 1.什么是Docker Registry?2.镜像源配置3.镜像仓库命令1.命令清单2.docker login2.docker pull3.docker push4.docker search5.docker logout 1.什么是Docker Registry? 镜像仓库(Docker Registry) 功能:负责存储、管理和分发镜像&#x…

腾讯云网站/域名备案操作流程

目录 一、备案服务授权二、备案 一、备案服务授权 二、备案 在“我的备案”页面,点击【去备案】: 点击【新增备案】: 点击【同意并继续】: 选择省份,点击【开始备案】: 输入备案相关信息后点击【提交】…

vue给数组对象赋值改变对象里面的数据,数据没有更新this.$set

替换数组startTime的值: 原数据 this.serviceTimeList.push({serviceTimeName: 服务时间段,startTime: this.startTime,endTime: this.endTime,currentDateStart: this.currentDate,currentDateEnd: this.currentDate}) this.$set(this.array, index, newValue); …

笑谈“八股文”,人生不成文

一、“八股文”在实际工作中是助力、阻力还是空谈? 作为现在各类大中小企业面试程序员时的必问内容,“八股文”似乎是很重要的存在。但“八股文”是否能在实际工作中发挥它“敲门砖”应有的作用呢?有IT人士不禁发出疑问:程序员面试…

计算机系统操作系统简介

目录 1.计算机系统简介 1.1组成结构 1.2系统软件 1.3冯诺依曼计算机特点 1.4硬件构架 2.硬件的进一步认识 2.1存储器 2.2输入设备 2.3输出设备 2.4CPU组成 2.5线的概念引入 3.操作系统 3.1操作系统简介 3.2操作系统如何管理 3.3库函数和系统调用 1.计算机系统简介…

Linux shell编程学习笔记67: tracepath命令 追踪数据包的路由信息

0 前言 网络信息是电脑网络信息安全检查中的一块重要内容,Linux和基于Linux的操作系统,提供了很多的网络命令,今天我们研究tracepath命令。 Tracepath 在大多数 Linux 发行版中都是可用的。如果在你的系统中没有预装,请根据你的…

一下午连续故障两次,谁把我们接口堵死了?!

唉。。。 大家好,我是程序员鱼皮。又来跟着鱼皮学习线上事故的处理经验了喔! 事故现场 周一下午,我们的 编程导航网站 连续出现了两次故障,每次持续半小时左右,现象是用户无法正常加载网站,一直转圈圈。 …

android前台服务

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 未经允许不得转载 目录 一、导读二、使用2.1 添加权限2.2 新建…

基于SpringBoot+Vue的档案管理系统(带1w+文档)

基于SpringBootVue的档案管理系统(带1w文档) 基于SpringBootVue的档案管理系统(带1w文档) 随着信息化的不断发展,科技的进步也越来越大。软件编程是一个不断发展的行业,每个行业都必须进行适合自身特点的系统开发,才能在机构中生存和发展。当…

大模型算法面试题(十七)

本系列收纳各种大模型面试题及答案。 1、LoRA权重是否可以合入原模型 LoRA权重可以合入原模型。LoRA(Low-Rank Adaptation of Large Language Models)是一种用于微调大型语言模型的低秩适应技术。它通过训练低秩矩阵,并将这些参数注入到原始…

大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

支持AI的好用的编辑器aieditor

一、工具概述 AiEditor 是一个面向 AI 的下一代富文本编辑器,她基于 Web Component,因此支持 Layui、Vue、React、Angular 等几乎任何前端框架。她适配了 PC Web 端和手机端,并提供了 亮色 和 暗色 两个主题。除此之外,她还提供了…

【Django5】内置Admin系统

系列文章目录 第一章 Django使用的基础知识 第二章 setting.py文件的配置 第三章 路由的定义与使用 第四章 视图的定义与使用 第五章 二进制文件下载响应 第六章 Http请求&HttpRequest请求类 第七章 会话管理(Cookies&Session) 第八章 文件上传…

聚观早报 | 华为nova Flip官宣;苹果iOS 17.6正式版发布

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 7月31日消息 华为nova Flip官宣 苹果iOS 17.6正式版发布 方程豹豹5全系降价 vivo X200 Pro主摄参数 谷歌Pixel …

PHP经销商订货管理系统小程序源码

经销商订货管理系统:重塑供应链效率的利器 🚀 开篇:解锁供应链管理的新纪元 在竞争激烈的商业环境中,经销商作为供应链的关键一环,其订货效率直接影响到整个供应链的流畅度和响应速度。传统的订货方式往往繁琐、易出…