Python爬虫基础之 Requests

编程入门 行业动态 更新时间:2024-10-26 18:15:35

Python<a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫基础之 Requests"/>

Python爬虫基础之 Requests

Requests

1.初识Requests

1.1Requests是什么?

在使用python爬虫时,需要模拟发起网络请求,主要用到的就是requests库和python内置的urllib库,requests是对Urllib的再次封装。

1.2Requests和Urllib的区别

requests可以直接构建常用的get和post请求并发起,而Urllib一般要先构建get或者post请求,然后再发起请求。

2.Requests库的使用

2.1Requests库的基本使用

以爬取百度网页为例,展示

import requestsurl = ''headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36','Cookie': 'BIDUPSID=93EF1841978DEC20F562F5B93FD8658C; PSTM=1678945034; BAIDUID=93EF1841978DEC20B21B3F434A91DD22:FG=1; BD_UPN=12314753; COOKIE_SESSION=44113_2_5_6_5_1_1_0_5_1_0_0_119780_5_0_0_1681221579_1679124123_1681265688%7C6%230_2_1679124116%7C1; BAIDUID_BFESS=93EF1841978DEC20B21B3F434A91DD22:FG=1; BA_HECTOR=0k05a0818lak018k000h01091i3hp031n; ZFY=o8ZeUjIcvHNzbZQkt5n5OZdpAMNcE7BScWXVgLKMnfc:C; B64_BOT=1; channel=baidusearch; baikeVisitId=e4768d47-8e26-496e-8b83-c40edd711e84; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BD_HOME=1; H_PS_PSSID=38515_36554_38470_38368_38468_36803_37928_37709_26350',
}response = requests.get(url=url, headers=headers)# 一个类型和六个属性
# Response类型
print(type(response))# 设置响应的编码格式
response.encoding = 'utf-8'# 以字符串的形式返回网页的源码
print(response.text)# 返回一个url地址
print(response.url)# 返回的是二进制的数据
print(response.content)# 返回响应的状态码
print(response.status_code)# 返回响应头
print(response.headers)
2.2Requests的get请求

以百度搜索为例

import requestsurl = '?'headers = {'User-Agent': 'Mozilla/5.0(Linux;Android6.0;Nexus5Build / MRA58N) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 110.0.0.0MobileSafari / 537.36Edg / 110.0.1587.69',
}kw = input("请输入你要搜索的关键词:")data = {wd : kw,
}# url 请求的资源路径
# params 参数
# kwarys 字典
response = requests.get(url=url, params=data, headers=headers)
response.encoding = 'utf-8'	# 指点编码格式content = response.text# 将爬取的源码写入文件
with open('beijing.html', 'w', encoding='utf-8') as fp:fp.write(content)

总结:

​ (1)参数使用params传递

​ (2)不需要请求对象定制

​ (3)请求资源路径中的?可以加也可以不加

可能出现的问题:

​ (1)若将获取的源码输出到控制台显示的源码可能不全

​ 原因是pycharm对控制台输出内容的大小做了限制,可以在帮助中的“编辑自定义属性”中追加数据修改,具体操作可到网上寻找教程。

​ 也可以将源码直接存储在文件中,无大小限制可以看到爬取的全部内容。

​ (2)爬取的源码看起来很乱

​ 原因是爬取的源码未格式化,可以存储到文件中进行格式化,使内容排版符合格式。

2.3Requests的post请求

以百度翻译获取查找单词的中文示意为例

import requestsurl = ''headers = {'User-Agent': 'Mozilla/5.0(Linux;Android6.0;Nexus5Build / MRA58N) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 110.0.0.0MobileSafari / 537.36Edg / 110.0.1587.69',
}data = {'kw': 'eye'
}# url 请求地址
# data 请求参数
# kwargs 字典
response = requests.post(url=url, data=data, headers=headers)
response.encoding = 'utf-8'content = response.text# 返回的是json数据,需要用到json
print(content)import json# load 访问文件     loads 访问内容
# obj = json.loads(content, encoding='utf-8')   这样写会报错,因为python3.9以上已经没有 encoding 这个参数了obj = json.loads(content)print(obj)

注意:百度翻译需要在英文状态下 的输入法输入英文单词,不然会找不到sug(其中包含post请求的url)

2.4Requests的代理
import requestsurl = ''headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
}data = {'wd':'ip'
}proxy = {'http':'212.129.251.55.16816'
}response = requests.get(url=url, params=data, headers=headers)content = response.textwith open('daili.html', 'w', encoding='utf-8') as fp:fp.write(content)

更多推荐

Python爬虫基础之 Requests

本文发布于:2024-02-10 13:49:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1675759.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   基础   Python   Requests

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!