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

Python网络爬虫之requests库

目录

一.网络爬虫的介绍

1.网络爬虫库

2.robot.txt规则

二.requests库

1.requests库的安装

2.get()函数

3.Response对象

Response的属性

 设置编码

返回网页内容

text()

content()

三.提交信息到网页

post()函数

四.会话与代理服务器


一.网络爬虫的介绍

1.网络爬虫库

①urllib库:Python自带的标准库,代码编写略微复杂

requests库:第三方库,在urllib库的基础上建立的,但使用起来更简洁方便

③scrapy库:第三方库,是一个专业应用程序开发的网络爬虫库

selenium库:第三方库,可用于驱动计算机中的浏览器执行相关命令,而无需用户手动操作

2.robot.txt规则

注意不是 网站中的所有信息都允许被爬取,也不是所有的网站都允许被爬取,在大部分网站的根目录存在一个robot.txt文件用于声明此网站中禁止访问的url和可以访问的url

User-agent表示访问网站的引擎,第一个值为*表示所有搜索引擎都需要遵守2-21行的规则

                  第二个值为Wandoujia Spider 表示Wandoujia Spider搜索引擎需要遵守的规则

Disallow表示该搜索引擎不允许访问的url,值为/则表示不允许访问任何内容

Allow表示该搜索引擎允许访问的url

Sitemap网站地图,用于提供网站中所有可以爬取的url

二.requests库

1.requests库的安装

pip install requests -i 镜像源地址

2.get()函数

在requests库中获取html网页内容的方法就是get()函数

get(url,params=None,**kwargs)

url:需要获取的网址

params:可选参数,以字典的形式发送信息,当需要想向网页中提交查询信息时使用

**kwargs:请求采用的可选参数

注意:此时get()函数爬取的网页源代码仅包含原始文本数据(如城市名称),不包含渲染后的资源(如图片、视频)。r是返回的Response对象

import requests
r = requests.get('https://www.ptpress.com.cn/')

部分数据(如搜索关键词)可通过字典参数动态添加到 URL 后(如 ?keyword=excel),适配不同网站的查询格式。search表示搜索

import requests
r = requests.get('https://www.ptpress.com.cn/search?keyword=人工智能')

我们也可以用param参数来添加搜索信息,需要提前将param定义为字典

import requests
info ={'keyword':'人工智能
'}
r = requests.get('https://www.ptpress.com.cn/search',params=info)

系统会自动在url后面添加字典信息形式为

https://www.ptpress.com.cn/search?keyword=人工智能'

3.Response对象

Response的属性

关键属性包括:
status_code:服务器返回的状态码(如200表示成功,301表示永久重定向)。
url:实际爬取的网页地址。
encoding、cookies:网页编码和 Cookie 信息。
状态码用于判断请求是否成功(如200为允许爬取,其他代码可能表示拒绝或错误)。

 设置编码

爬取内容出现乱码时,需将响应对象的编码(encoding)与网页实际编码(apparent_encoding)对齐。通过response对象.encoding = response对象.apparent_encoding自动匹配编码(如UTF-8),解决乱码问题。如果设置自动匹配编码后依然出现乱码,需要我们自行设置encoding编码方式
未设置编码时,输出内容可能因默认编码(如ISO-8859-1)与网页编码不匹配而显示乱码。

返回网页内容

Response对象返回网页对象有两种方法text()和content()

text()

以字符串形式返回网页内容

content()

以二进制形式返回网页内容常用于保存网页中的媒体文件,例如

import requests
r = requests.get('https://fileinfo.com/img/ss/xl/jpg_44-2.jpg')
f = open("1.jpg",'wb')
f.write(r.content)
f.close()

三.提交信息到网页

我们用post请求将表单中的数据提交给浏览器

post()函数

post(url,data=None,json=None,**kwarge)
  • url:目标网站地址。
  • data:需要发送的以字典/元组形式提交的信息(如密码修改表单)。
  • json:需要发送的JSON类型的数据
  • **kwargs:请求采用的可选参数

返回值也是一个Response对象

四.会话与代理服务器

会话维持:HTTP无记忆性需通过cookie或session保持连续操作(如翻页爬取)


代理服务器:
作用:避免IP被封禁,通过中间服务器转发请求(如爬取淘宝数据)。
扩展应用:VPN原理类似,通过代理访问受限网站(如Facebook、ChatGPT)。
获取方式:免费代理IP不稳定,推荐付费服务(如香港/新加坡服务器)。

http://www.dtcms.com/a/285118.html

相关文章:

  • ISL8121IRZ-T 瑞萨电子Renesas高效双路同步降压控制器 【5G基站、AI服务器】专用
  • LIN通信驱动代码开发注意事项
  • 多重共线性Multicollinearity
  • 复合机器人在生物制药实验室上下料搬运案例
  • LeetCode热题100【第二天】
  • 91套商业策划创业融资计划书PPT模版
  • AppTrace:重新定义免填邀请码,解锁用户裂变新高度
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | PasswordGenerator(密码生成器)
  • 三、了解OpenCV的数据类型
  • 高效去除字符串末尾重复单元的 KMP 前缀函数优化算法实现
  • VR 远程系统的沉浸式协作体验​
  • SpringBoot 使用MyBatisPlus
  • 在windows平台上基于OpenHarmony sdk编译三方库并暴露给ArkTS使用(详细)
  • VSCODE常规设置
  • No catalog entry ‘md5‘ was found for catalog ‘default‘. 的简单解决方法
  • 学习软件测试的第十八天
  • 一款基于PHP开发的不良事件上报系统源码,适用于医院安全管理。系统提供10类事件类别、50余种表单,支持在线填报、匿名上报及紧急报告。
  • 前端防复制实战指南:5 种主流方案效果对比与实现
  • Ubuntu20.04上安装Anaconda
  • 磁盘分区(D盘分给C盘)
  • 【Triton 教程】triton_language.zeros_like
  • 跨域通信inframe高级
  • docker安装、启动jenkins服务,创建接口自动化定时任务(mac系统)
  • Web APIs 知识复习1
  • 基于STM32闭环步进电机控制系统设计说明
  • 【Linux庖丁解牛】— 信号捕捉!
  • SVG基础语法:绘制点线面的简单示例
  • Selenium 启动的浏览器自动退出问题分析
  • 使用Collections.max比较Map<String, Integer>中的最大值
  • C语言基础6——数组