requests学习笔记

本文介绍了如何使用Python的requests库进行网页抓取,包括使用get和post方法访问页面,应对反爬虫策略,如设置headers,以及如何从POST请求中解析JSON数据。同时,讲解了如何通过封装参数简化长URL,便于更高效地爬取网页信息。
摘要由CSDN通过智能技术生成

导入requests库

使用import语句导入requests库

import requests

使用get访问页面

使用requests.get()语句可以提取页面的信息
此语句可以简单地理解为一个简易的浏览器

import requests
url = 'https://www.baidu.com/s?wd=python'
resp = requests.get(url)
print(resp)

运行 可以得到结果

<Response [200]>

其中 中括号中的状态值200 代表爬取网页正常 但是这并非我们想要的页面内容 此时 我们就要使用到.text语句来获取页面响应的内容 将它以文本格式返回页面源代码

print(resp.text)

运行程序 可以得到该网页的源代码
在这里插入图片描述

反反爬虫

有些网站为了防止用户使用爬虫程序对该网站进行爬虫 设置了一些反爬虫措施 我们想要绕过该反爬虫措施 就要使用到headers

在我们想要爬取的页面按下f12 找到network在这里插入图片描述
此时 network中并没有任何内容 我们只需要刷新一下页面 便会看到多出了许多内容在这里插入图片描述
我们找到最上面的一项 在请求头(requests headers)中找到最下面一项的user-agent 将它复制
在这里插入图片描述
在我们的代码中创建一个字典 将刚才复制的user-agent复制进去
注意 一定要是字典格式

import requests
url = 'https://www.baidu.com/s?wd=python'
headers = {
'useragent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
resp = requests.get(url,headers=headers)
print(resp)
print(resp.text)
resp.close()

此时 我们再次运行带有反爬虫措施的网站时 就能顺利爬取到该网站的信息

使用post访问页面

此处我们使用百度翻译作为练习
如何在百度翻译上爬取到我们想要的翻译内容呢?我们此时需要使用到post方法
在这里插入图片描述
我们在百度翻译上搜索’dog’ 可以发现下面带有许多的翻译 我们如何提取此处的翻译呢

同样 我们按下f12 找到sug
在这里插入图片描述
我们可以看到 在最下方的form data中 可以看见我们的kw(key word)为dog
我们在代码中创建一个字典 将kw和dog放进字典中

import requests
url = 'https://fanyi.baidu.com/sug'
dat = {
    'kw' : 'dog'
}
resp = requests.post(url,data=dat)
print(resp)
print(resp.text)
resp.close()

运行程序 得到结果
在这里插入图片描述

此时我们得到的结果并不是我们所熟悉的中文 此时我们需要使用到requests中的json进行一个转码

import requests
url = 'https://fanyi.baidu.com/sug'
dat = {
    'kw' : 'dog'
}
resp = requests.post(url,data=dat)
print(resp.json())
resp.close()

此时运行程序 得到的结果就是我们可以看懂的中文了
在这里插入图片描述
这样 我们就完成了对于百度翻译的爬取

重新封装参数

当我们在爬取某些网站时 发现网站的参数特别的长 例如
在这里插入图片描述
在使用get方法爬取网站时非常不方便 此时我们可以重新封装参数使得url变得简洁

同样 在该网址下按下f12 并且刷新该页面
在这里插入图片描述
找到network中的XHR 找到其中的参数在这里插入图片描述

将query string parameters中的内容复制到代码中 以字典形式存放

import requests
url = 'https://movie.douban.com/j/chart/top_list'
param = {
    'type': '24',
    'interval_id':'100:90',
    'action': '',
    'start': '0',
    'limit': '20'
}
headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
resp = requests.get(url=url,params=param,headers=headers)
print(resp.json())
resp.close()

运行 得到结果
在这里插入图片描述

这样我们就成功的使用重新封装参数爬取到网页的数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值