爬虫学习(1)--requests模块的使用

前言

什么是爬虫

爬虫是一种自动化工具,用于从互联网或其他计算机网络上获取数据。它可以模拟人的行为,自动访问网页,提取感兴趣的数据,并将其存储到本地计算机或数据库中。爬虫通常用于搜索引擎、数据分析、信息聚合等领域,也被许多企业用于市场调研、竞争分析、用户行为分析等。一些爬虫可能会被用于恶意用途,如扫描漏洞、盗取信息等,因此使用爬虫时应遵守相关法律法规和伦理规范。

爬虫工作的流程图

正文

1. 认识requests模块

  urllib是python中请求URL连接的官方标准库,在python2中分为urllib and urllib2,在python3中整合成urllib。requests模块是在urllib3模块基础上进行高度封装,使用更方便,更加人性化。

2.安装requests模块

win+R后输入cmd,之后输入以下的命令即可。

pip install requests

使用pychram的用户:File->Settings->Progect,此界面有加号,可以自行安装

使用anaconda的用户:默认就有了

import requests

3. 发起GET请求

GET请求方法

发送网络请求指的是向一个特定的网络地址或URL,向服务器发送请求,以获取数据或执行操作。网络请求可以包含各种数据和参数,例如用户输入、查询条件、身份验证令牌等。发送网络请求是Web应用程序和移动应用程序等客户端应用程序与服务器端应用程序之间通信的关键步骤。常见的网络请求方法包括GET、POST、PUT、DELETE等。

import requests	# 导入requests模块
response = requests.get('http://www.baidu.com')
发送带参数的请求

发送带参数的请求的意义是可以将需要发送的数据以参数的形式传递给服务器,服务器可以根据不同的参数值做出不同的响应。对于不同的业务场景,可以使用不同的参数来控制服务器的行为,例如:

  • 在搜索引擎中,可以通过参数来指定搜索关键词、排序方式、分页等信息,以得到不同的搜索结果。
  • 在电商网站中,可以通过参数来指定商品类别、价格区间、品牌等信息,以筛选出符合条件的商品。
  • 在社交网络中,可以通过参数来指定用户ID、关注列表、粉丝列表等信息,以获取相应的用户信息和社交关系。
import requests	# 导入requests模块
payload = {'key1': 'value1', 'key2': 'value2'}	# 字符串字典
r = requests.get("http://www.baidu.com/", params=payload)
print(r.url)
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}	# 将一个列表作为值传入
r = requests.get('http://www.baidu.com/', params=payload)
print(r.url)
r = requests.get("https://www.baidu.com/s?wd=长春&ie=utf-8&tn=06136131_11_oem_dg")
#百度搜索关键字与“长春”有关的信息
print(r.url)
r = requests.get("https://www.baidu.com/s?wd=北京&ie=utf-8&tn=06136131_11_oem_dg")
print(r.url)

运行结果:

定制请求头headers

请求头是HTTP协议中用于传输请求信息的一部分,它包含了一些关于请求的元数据,如请求类型、请求资源地址、请求参数、请求的来源等。常见的请求头字段包括: User-Agent (浏览器或客户端的身份标识)、Accept(客户端能够接收的MIME类型)、Cookie(请求携带的cookie数据)、Referer(请求前一个页面的地址)、Authorization(身份认证信息)、Content-Type(请求参数的MIME类型)、Content-Length(请求参数的长度)等。

如:User-Agent= 'Mozilla/5.0 (Windows NT 10.0; WOW64)

import requests	# 导入requests模块
url = 'http://www.baidu.com/s?wd=你是我的神'
headers = {
        'Content-Type': 'text/html;charset=utf-8',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'
    }
r = requests.get(url,headers=headers)
print(r.headers)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spire.Office 8.12.2 for .NET

Spire.Office 8.12.2 发布。在此版本中,Spire.Doc支持Word到PCL和PostScript转换中的文本整形以及确定文档是否加密;Spire.Presentation支持将母版页转换为图像;Spire.PDFViewer支持在WinForm项目中使用Ctrl滚轮实现界面缩放效果。此外&#…

ChatGPT4.0(中文版)国内无限制免费版(附网址)

ChatGPT,由OpenAI开发的人工智能语言模型。它是你的数字对话伙伴,无论你有何问题或需要什么帮助,它都能提供有用的信息。 经过不断的研发和更新,ChatGPT的性能和功能得到了显著提升。现在,我们将重点介绍ChatGPT的两个…

Kubernetes弃用Dockershim,转向Containerd:影响及如何应对

Kubernetes1.24 版本发布时,正式宣布弃用 Dockershim,转向 Containerd 作为默认的容器运行环境。Kubernetes 以 CRI(Container Runtime Interface) 容器运行时接口制定接入准则,用户可以使用 Containerd、CRI-O、CRI- Dockerd 及其他容器运行…

Apple Unity Plugins 接入GameCenter 崩溃解决方案

目录 问题问题原因解决方案可直接使用的UnityPlugins 问题 调用 GKLocalPlayer.Local.FetchItems() 程序崩溃,报错:Thread 1: EXC_BAD_ACCESS (code257, address0x8000000000000002) 启动崩溃,报错:Library not loaded: rpath/Ap…

13. 罗马数字转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#x…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第三节 栈与堆,值类型与引用类型

深入浅出图解C#堆与栈 C# Heaping VS Stacking 第三节 栈与堆,值类型与引用类型 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工…

RFID珠宝门店智能管理设计解决方案

一、项目背景 目前,珠宝行业的盘点工作主要依靠人工操作完成,然而由于珠宝产品体积小、数量大,大数量的产品由少量营业人员花费大量时间进行盘点,这导致盘点效率低下,进而减少了珠宝店在客户营销方面的时间投入。 二、…

1.DQL查询数据(超重点)以及distinct(去重)

DQL(Data Query Language:数据查询语言) 1.所有查询操作都用 SELECT 2.无论是简单的查询还是复杂的查询它都能做 3.数据库中最核心的语言,最重要的语句 4.使用频率最高的语句 语法: SELECT 字段1,字段2,……FROM 表 有时候…

【技术揭秘】软网关BLIoTLink,轻松部署至工控机,实现协议转换网关的快速搭建!

本文教你使用钡铼提供的协议转换软件BLIoTLink ,快速搭载在ARM工控机上,变成迷你边缘计算网关。话不多说,跟着操作起来吧! 功能简介 BLIoTLink是由深圳市钡铼技术有限公司为推进工业物联网发展而研发的一款免费的嵌入式物联网协…

PC9095高性能可调限流OVP过压过流保护 软启动 抗浪涌 集成功率FET开关

特点 •输入电压范围: •PC9095A、PC9095KA:2.5伏~13.5伏 •PC9095B,PC9095KB:2.5伏~10伏 •PC9095C,PC9095KC:2.5伏~5.5伏 •28V绝对最大额定电压VOUT •带外部电阻器的可调限流器 •集成功率FET开关,53mΩRds&#xff08…

php学习05-常量

常量可以理解为值不变的量。常量值被定义后,在脚本的其他任何地方都不能改变。一个常量由英文字母、下划线和数字组成,但数字不能作为首字母出现。 在PHP中使用define()函数来定义常量,该函数的语法格式如下: define(string cons…

#define定义宏

#define的定义范围 #define不光可以定义变量,常量,还可以定义几乎所有的东西,因为#define可以定义一串代码(即宏),所以包含在代码中的东西都能被定义。 #define定义宏 定义是宏名必须于它的参数括号紧挨&am…

web自动化上传文件

1,web 自动化文件上传不要太简单 熟悉 web 自动化测试的大佬应该都懂,当采用 js 调用原生控件进行文件上传的时候,最常用的是使用 pywin32 等系统交互库。 当看到 pywin32 那丑陋的 api 封装只能爆粗口。就为了输入一个文件地址,…

再获认可,YashanDB入选工信部电子一所“2023年数字化转型自主创新解决方案优选案例”

近日,由国家工业信息安全发展研究中心(工业和信息化部电子第一研究所)主办的“数智赋能 创新领航”2023年数字化转型自主创新解决方案优选案例正式公布。深圳计算科学研究院(简称:深算院)自主研发的崖山数据…

校园安全风险管理系统

随着社会的不断发展和进步,教育行业也逐渐走向了信息化、智能化管理。校园作为教育事业的重要场所,其安全和管理问题一直备受关注。为了确保校园的安全和管理,各种校园管理平台应运而生。 其中,凡尔码搭建的校园安全管理系统为校园…

AVL树(超详解)

文章目录 前言AVL树的概念AVL树的实现定义AVL树insert 单旋左单旋右单旋左单旋代码右单旋代码 双旋左右双旋右左双旋 测试AVL树的性能 前言 AVL树是怎么来的呢? 我们知道搜索二叉树会存在退化问题,退化以后就变成单支或者接近单支。 它的效率就变成O(N)…

react 之 美团案例

1.案例展示 2.环境搭建 克隆项目到本地(内置了基础静态组件和模版) git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务(内置了json-server) npm run serve 启动前端服务 npm…

【React源码 - ReactDom.render发生了什么】

在React开发中,在入口文件我们都会执行ReactDom.render来讲整个应用挂载在主document中,那其中发生了什么,React是如何讲我们写的JSX代码,一步一步更新Fiber进而挂载渲染的呢。本文主要是基于react17.0.2的源码以及自己的理解来简…

linux 内核模块

linux 内核模块 1. 内核相关命令与文件内核模块存放位置查看已加载内核模块加载与卸载内核模块修改内核参数永久调整内核参数 2. 常用模块进程调度模块进程间通信模块内存管理模块文件系统模块网络接口模块 Linux 内核采用的是模块化技术,这样的设计使得系统内核可以…

Jmeter吞吐量控制器总结

吞吐量控制器(Throughput Controller) 场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现。 添加吞吐量控制器 用法1: Percent Executions 在一个线程组内分别建立两个吞吐量控制器, 分别放业务A和业务B …