网络请求模块(2)
1. get 请求方式与 post 请求方式
get 请求
从服务器获取数据 没有对服务器产生影响 通常都是 get 请求、
请求参数在 url 地址上显示,时间戳就是后面的各种参数
post 请求
向服务器发送数据 会对服务器产生影响 通常都是 post 请求
请求参数不会在 url 上显示
就像百度翻译翻译一样他是一个动态加载数据,有道翻译是 ajax 请求,真正的 URL 在 XHR 里
2 User-Agent 用户代理
作用就是伪装爬虫记录用户数据,这会作为反反爬的第一步,更好的获取完整的 HTML 源码
3 urllib 模块
urllib 是 python 的一个内置的网络请求模块 ,内置函数还有很多如 time random 等
有时候需要结合我们的 requests 模块去综合使用 urlretreieve 参数说明 url: 外部或者本地的 url
遇到这样的如何获取源码
4 .urllib.request
urllib.request.urlopen("网址") 向网站发起一个请求并获取响应
字节流 = response.read()
字符串 = response.read().decode("utf-8")
urllib.request.Request"网址",headers="字典") urlopen()不支持重构 User-Agent
read() 读取服务器响应的内容
getcode() 返回 HTTP 的响应码
geturl() 返回实际数据的 URL(防止重定向问题)
5 urllib.parse
UnicodeEncodeError: 'ascii' codec can't encode characters in position 51-53: ordinal not in range(128) 报错信息 urllib 网络请求模块在想一个携带了中文的 url 发送请求的时候可能会出现问题。
方法就是转成 16 进制
urlencode 传入参数类型:字典 功能:将存入的字典参数编码为 URL 查询字符串,即转换成以 key1=value1&key2=value2 的形式
enquote 对 url 进行解码,把类似"%xx"的字符替换成单个字符
版权声明: 本文为 InfoQ 作者【张立梵】的原创文章。
原文链接:【http://xie.infoq.cn/article/780e89178d26be87f4077e5d4】。文章转载请联系作者。
评论