必知知识点
-常见请求头
User-Agent | 浏览器的身份标识字符串 |
Content-Type | 请求体的MIME类型 (用于POST和PUT请求中) |
-常见响应头
Status | 通用网关接口的响应头字段,用来说明当前HTTP连接的响应状态。 |
-https协议的加密方式
对称秘钥(容易被拦截)
非对称秘钥(模拟服务器响应)
证书认证(第三方机构认证的,通信双方都认可)
requests模块:requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简介,在爬虫领域占据很重要的地位。
使用requests:
自动处理url编码
自动处理post请求参数
简化cookie和代理操作
使用流程:
指定url
基于requests模块发起请求
获取响应对象中的数据值
持久化存储
实际案例:
# 需求,爬取搜狗指定词条搜索后的页面
import requests
url = "http://www.sogou.com/web"
wd = input('enter a word:')
param = {
'query':wd
}
response = requests.get(url=url,params=param)
page_text = response.content
fileName = wd+'.html'
with open(fileName,'wb') as f:
f.write(page_text)
print('over')
# 豆瓣喜剧电影排行
import requests
url = 'https://movie.douban.com/j/chart/top_list'
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36"
}
parma = {
"type": "24",
"interval_id": "100:90",
"action": "",
"start": "1",
"limit": "20",
}
response_obj = requests.get(url=url,headers=headers,params=parma).json()
print(response_obj)
# 爬取肯德基地址
import requests
import json
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36"
}
f = open('KFCaddr.json','w',encoding='utf-8')
for i in range(1,8):
data = {
"cname": "",
"pid": "",
"keyword": "北京",
"pageIndex": str(i),
"pageSize": "10",
}
obj_json = requests.post(url=url,headers=headers,data=data).json()['Table1']
json.dump(obj_json,f,ensure_ascii=False)
f.close()