requests学习笔记
导入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()
运行 得到结果
这样我们就成功的使用重新封装参数爬取到网页的数据了