首先,我们先了解一下两种网络请求模块:urllib模块(不推荐)和requests模块
requests模块:python中原生的一款基于网络请求的模块,功能非常强大、简单便捷、效率极高。
作用:模拟浏览器发请求
requests模块的编码流程
- 指定url
- 发起请求
- 获取响应数据
- 持久化存储
环境安装
pip install requests
实战编码:
需求
爬取搜狗指定词条对应的搜索结果页面(简易网页采集器)
编写爬虫前,我们还需要了解:
- User-Agent:请求载体的身份标识
- UA检测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款浏览器,说明该请求是一个正常的请求;如果哦检测到请求身份标识不是属于某一款浏览器的标识该请求为不正常的请(爬虫),则服务器端会拒绝该次请求。
- UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器
import requests
if __name__ == "__main__":
# UA伪装:将对应的User-Agent封装到一个字典中
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
url = 'https://www.sogou.com/web'
# 处理url携带的参数:封装到字典中
kw = input('请输入关键词:')
param = {
'query': kw
}
# 对指定url燃气请求对应的url是携带参数的,并且请求过程中处理了参数
response = requests.get(url=url, params=param, headers=headers)
page_text = response.text
fileName = kw + '.html'
with open(fileName, 'w', encoding='utf-8') as fp:
fp.write(page_text)
print(fileName, '保存成功!!!')
运行结果如下: