url
协议://主机名:端口号/路径/?查询字符串#锚点
scheme://host:port/path/?query-string=xxx#anchor
https://baike.baidu.com/item/刘德华/114923?fr=aladdin#4
post请求----验证码,密码,上传文件
get请求-----获取文字,图片,音频
请求头: url body head
请求头参数:User-Agent(浏览器) Referer(上一页url) Cookie(记录登录名..)
状态码:
1. 200 :请求正常,服务器正常的返回数据。
2 301 :永久重定向。比如在访问www.jigcong.cm的时候会重定向到www.jd.com 。
3. 302 :临时重定向。比如在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面。
4. 400:请求的url在服务器上找不到。换句话说就是请求url错误。
5. 403 :服务器拒绝访问,权限不够。
6. 500 :服务器内部错误。可能是服务器出现bug了。
urllib库//python自带的基本网络请求库
urlopen
from urllib import request
resp = request.urlopen('网址')
print(resp.read())
urlretrieve//将网页上的一个文件保存到本地
from urllib import request
request.urlretrieve('http://www.baidu.com','baidu.html')
urlencode //编码字符串使其满足http编码要求
from urllib import parse
from urllib import request
url = 'http://www.baidu.com/s'
params = {"wd":"刘德华"}
qs = parse.urlencode(params)
url = url + "?" + qs
resp = request.urlopen(url)
print(resp.read())
parse_qs //还原经过编码的字符串
qs = {"name":"jinx","age":"18"}
qs = parse.urlencode(qs)
rest = parse.parse_qs
urlparse//解析url
from urllib import parse
//属性参考第2行
url = 'http://www.baidu.com/s;hello?wd=python&username=abc#1'
result = parse.urlparse(url)
print('scheme:',result.scheme)// http
print('netloc:',result.netloc)// www.baidu.com
print('path:',result.path)// /s
print('params:',result.params)// hello
print('query:',result.query)// wd=python&username=abc
print('fragment:',result.fragment)// 1
urlsplit//分割url 类似urlparse 但没有params属性
from urllib import parse
//属性参考第2行
url = 'http://www.baidu.com/s?wd=python&username=abc#1'
result = parse.urlsplit(url)
print('scheme:',result.scheme)
print('netloc:',result.netloc)
print('path:',result.path)
print('query:',result.query)
print('fragment:',result.fragment)
request.Request 类 //处理请求头
from urllib import request
url = ''
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
}
data = {
'frist':'true',
'pn':1,
'kd':'python'
}
data = parse.urlencode(data).encode('utf-8')//urlencode把data编码,后由encode编码为utf-8
req = request.Request(url,headers=headers,data=data,method='POST')
resp = request.urlopen(req)
print(resp.read())