爬虫学习第六篇轻松搞定网络请求

嘿,小伙伴们!今天咱们来聊聊用Python进行网络请求,这是爬虫学习的敲门砖哦。别怕,跟着我一步步来,保证让你轻松上手!

(一)安装requests模块

首先,得把requests模块装上。看过上一篇的小伙伴应该都搞定了吧,这玩意儿超好用,能帮我们轻松发起网络请求。如果没搞定的,跟着我重新安装一遍,在vscode的终端里输入pip install requests,回车,搞定!就像给手机装了个APP一样简单。(如果安装中有什么问题可以去我的第五篇内去学习一下)爬虫学习第五篇环境的准备工作

pip install requests

(二)基本请求示例

1. 导入模块

用Python写代码,先得把要用的模块“请”进来。就像请朋友帮忙一样,写上import requests,这样requests模块就准备好帮我们干活啦。

import requests

2. 向目标网址发起请求

接下来,咱们得告诉requests要去哪儿。比如,你想看看腾讯的招聘信息,就把网址准备好,然后用requests.get(url),给就像网站发了个“打招呼”的信号,等着它回复呢。(记得修改对应的url)

requests.get(url)

(三)处理中文乱码问题

有时候,网站回复的内容里有中文,可能会出现乱码,就像字母串门跑错了房间一样。别急,我们可以通过设置响应对象的编码来解决。这就像是给文字排排座位,让它们乖乖待在正确的位置,乱码问题就解决了。

1. 检查网页的编码

在处理乱码之前,我们需要先确认网页的编码格式。通常,网页的编码格式可以在网页的HTML源码中找到,例如:

HTML复制

或者在HTTP响应头中查看Content-Type字段,例如:

Content-Type: text/html; charset=utf-8

2. 设置响应对象的编码

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)

(四)获取贴吧数据

1. 通过控制台输入贴吧名字获取数据(第一种传参方式)

想看看某个贴吧的内容?直接在控制台输入贴吧名字就行。比如,你想看“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}")

2. 通过字典传递参数(第二种传参方式)

这种方式更灵活。你可以把参数都放在一个字典里,比如{'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}")

(五)下载图片

1. 获取图片数据

想下载图片?先找到图片的网址。比如,你想下载一张风景图,找到网址后,用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}")

2. 保存图片到本地

拿到图片数据后,得把它存到本地。用with open('1.png', 'wb') as f:,然后f.write(res.content),图片就保存好了。with会自动帮你关文件,不用担心文件没关。当然,你也可以用传统的openclose,不过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模块发起网络请求,搞定中文乱码,还能下载图片。是不是感觉很酷?别急,这只是开始,爬虫的世界还有很多好玩的等着咱们去探索。下次见啦,加油哦!

你可能感兴趣的:(python学习,爬虫,学习,python)