嘿,小伙伴们!今天咱们来聊聊用Python进行网络请求,这是爬虫学习的敲门砖哦。别怕,跟着我一步步来,保证让你轻松上手!
首先,得把requests模块装上。看过上一篇的小伙伴应该都搞定了吧,这玩意儿超好用,能帮我们轻松发起网络请求。如果没搞定的,跟着我重新安装一遍,在vscode的终端里输入pip install requests
,回车,搞定!就像给手机装了个APP一样简单。(如果安装中有什么问题可以去我的第五篇内去学习一下)爬虫学习第五篇环境的准备工作
pip install requests
用Python写代码,先得把要用的模块“请”进来。就像请朋友帮忙一样,写上import requests
,这样requests模块就准备好帮我们干活啦。
import requests
接下来,咱们得告诉requests要去哪儿。比如,你想看看腾讯的招聘信息,就把网址准备好,然后用requests.get(url)
,给就像网站发了个“打招呼”的信号,等着它回复呢。(记得修改对应的url)
requests.get(url)
有时候,网站回复的内容里有中文,可能会出现乱码,就像字母串门跑错了房间一样。别急,我们可以通过设置响应对象的编码来解决。这就像是给文字排排座位,让它们乖乖待在正确的位置,乱码问题就解决了。
在处理乱码之前,我们需要先确认网页的编码格式。通常,网页的编码格式可以在网页的HTML源码中找到,例如:
HTML复制
或者在HTTP响应头中查看Content-Type
字段,例如:
Content-Type: text/html; charset=utf-8
当requests
获取到响应内容时,默认使用ISO-8859-1编码(Latin1),这可能会导致中文乱码。我们可以通过设置响应对象的encoding
属性来解决。
Python复制
import requests
url = "http://example.com" # 替换为你的目标网址
response = requests.get(url)
# 检查网页的编码格式
print(response.encoding) # 默认通常是ISO-8859-1
# 如果网页是UTF-8编码,设置响应对象的编码
response.encoding = 'utf-8'
# 打印网页内容
print(response.text)
想看看某个贴吧的内容?直接在控制台输入贴吧名字就行。比如,你想看“Python学习”贴吧,输入名字后,程序会拼接出完整的网址,然后用requests.get(url)
去获取数据。就像你告诉程序:“嘿,去帮我看看这个贴吧!”程序就会乖乖去拿数据回来。
import requests
# 通过控制台输入贴吧的名字
name = input('请输入你要进入的贴吧名字:')
# 拼接完整的URL
url = f'https://tieba.baidu.com/f?ie=utf-8&kw={name}&fr=search'
# 发起GET请求
res = requests.get(url)
# 检查响应状态码
if res.status_code == 200:
# 设置响应的编码为UTF-8(根据实际网页编码调整)
res.encoding = 'utf-8'
# 打印网页内容
print(res.text)
else:
print(f"请求失败,状态码:{res.status_code}")
这种方式更灵活。你可以把参数都放在一个字典里,比如{'ie': 'utf-8', 'kw': name, 'fr': 'search'}
,然后用requests.get(url=url1, params=canshu)
。这就像是给网站发了个“包裹”,里面装着它需要的参数,网站收到后就会按照要求返回数据。
import requests
# 通过控制台输入贴吧的名字
name = input('请输入你要进入的贴吧名字:')
# 定义基础URL
url = 'https://tieba.baidu.com/f'
# 定义参数字典
params = {
'ie': 'utf-8',
'kw': name,
'fr': 'search'
}
# 发起GET请求,传递参数
res = requests.get(url, params=params)
# 检查响应状态码
if res.status_code == 200:
# 设置响应的编码为UTF-8(根据实际网页编码调整)
res.encoding = 'utf-8'
# 打印网页内容
print(res.text)
else:
print(f"请求失败,状态码:{res.status_code}")
想下载图片?先找到图片的网址。比如,你想下载一张风景图,找到网址后,用requests.get(url)
获取图片数据。就像你对网站说:“嘿,把这张图片给我看看!”网站就会把图片数据发给你。
import requests
# 图片的URL
url = 'url'
# 发起GET请求,获取图片数据
res = requests.get(url)
# 检查响应状态码
if res.status_code == 200:
# 获取图片的二进制数据
image_data = res.content
print("图片数据获取成功!")
else:
print(f"请求失败,状态码:{res.status_code}")
拿到图片数据后,得把它存到本地。用with open('1.png', 'wb') as f:
,然后f.write(res.content)
,图片就保存好了。with
会自动帮你关文件,不用担心文件没关。当然,你也可以用传统的open
和close
,不过with
更方便。
import requests
# 图片的URL
url = 'URL'
# 发起GET请求,获取图片数据
res = requests.get(url)
# 检查响应状态码
if res.status_code == 200:
# 使用with语句打开文件,自动关闭文件
with open('1.png', 'wb') as f:
f.write(res.content)
print("图片保存成功!")
else:
print(f"请求失败,状态码:{res.status_code}")
小伙伴们,今天咱们学了好多好玩的东西呢!用requests
模块发起网络请求,搞定中文乱码,还能下载图片。是不是感觉很酷?别急,这只是开始,爬虫的世界还有很多好玩的等着咱们去探索。下次见啦,加油哦!