2018年6月12日笔记

  • 爬虫概念

网络爬虫(又被称为网页蜘蛛,网页追踪者),是一种按照一定的规则,自动抓取网络信息的程序或脚本。

  • GET & POST

HTTP与服务器交互的4个基本方法:

  GET:会向数据库发索取数据的请求,无论进行多少次操作,结果都是一样的。就像数据库的select操作。

  POST:向服务器端发送数据的,但是该请求会改变数据的种类等资源。就像数据库的insert操作。 --> 几乎目前所有的提交操作都是用POST请求的。

  PUT:向服务器端发送数据的,从而改变信息,该请求是用来修改数据的内容,但是不会增加数据的种类。就像数据库的update操作。

  DELETE:是用来删除某一个资源的。就像数据库的delete操作。

GET与POST的区别:

1)GET请求的数据附在URL之后(把数据放在HTTP协议头中)

  以 ?分割URL和传输数据,参数间以 & 相连

扫描二维码关注公众号,回复: 1588131 查看本文章

    英文/数字   --->   原样

    空格    --->   +

    中文/其他字符   --->   %XX (16进制ASCII)

    POST把数据放在HTTP包的包体中

2)GET可提交的数据量与URL长度有关

  URL不存在参数上限问题,HTTP协议也没对URL长度进行限制;

  主要是特定浏览器对它的限制,IE对URL长度限制是2083字节(2K+35);

  而其他浏览器,如FireFox,理论上没有限制,取决于OS的支持。

    POST对数据是没有限制的,限制主要是服务器的处理能力。

3)POST安全性比GET高

  通过GET提交数据,用户名和密码将以明文形式出现在URL上

  • requests模块:get方式
1 import requests
2 
3 params = {"key1": "hello", "key2": "world"}
4 url = "http://www.jd.com"
5 r = requests.get(url=url, params=params) # requests.get("https://www.jd.com/?key1=hello&key2=world")
6 print(r.url)
https://www.jd.com/?key1=hello&key2=world
  • requests模块:post方式
1 import requests
2 
3 params = {"key1": "hello", "key2": "world"}
4 r = requests.post("http://httpbin.org/post", data=params)
5 print(r.text)
{    
"args":{},
"data":"",
"files":{},
"form":{"key1":"hello","key2":"world"},
"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate","Connection":"close","Content-Length":"21","Content-Type":"application/x-www-form-urlencoded","Host":"httpbin.org","User-Agent":"python-requests/2.18.4"},
"json":null,
"origin":"112.0.151.7",
"url":"http://httpbin.org/post"
}
  • requests模块:text与content
 1 import requests
 2 
 3 url = "https://www.qiushibaike.com/"
 4 r = requests.get(url=url)
 5 
 6 print(r.text)           # 用于提取文本
 7 print(type(r.text))     # <class 'str'>
 8 
 9 print(r.content)        # 用于提取图片、文件等
10 print(type(r.content))  # <class 'bytes'>
  • requests模块:session()会话对象
1 import requests
2 
3 s = requests.session()
4 
5 url = "http://www.jd.com"
6 
7 s.get(url=url)
8 # 所有一次会话的信息都保存在s中,只需对s进行操作就可以了
  • requests模块:获取cookie信息
 1 import requests
 2 
 3 def save_cookie():
 4     s = requests.session()
 5     s.get("https://www.hao123.com/")
 6     print(s.cookies)
 7     print(s.cookies.keys())
 8     print(s.cookies.values())
 9     for i in s.cookies:
10         print(i)
11         print(i.name, i.value, i.domain, i.path, i.expires)
12 
13 if __name__ == "__main__":
14     save_cookie()
<RequestsCookieJar[<Cookie BAIDUID=E82C769F55DF08DAF85021675FA3A3AB:FG=1 for .hao123.com/>, <Cookie __bsi=6671906315530985296_00_74_N_N_205_0303_c02f_Y for .www.hao123.com/>, <Cookie hz=0 for .www.hao123.com/>, <Cookie ft=1 for www.hao123.com/>, <Cookie v_pg=normal for www.hao123.com/>]>
['BAIDUID', '__bsi', 'hz', 'ft', 'v_pg']
['E82C769F55DF08DAF85021675FA3A3AB:FG=1', '6671906315530985296_00_74_N_N_205_0303_c02f_Y', '0', '1', 'normal']
<Cookie BAIDUID=E82C769F55DF08DAF85021675FA3A3AB:FG=1 for .hao123.com/>
BAIDUID E82C769F55DF08DAF85021675FA3A3AB:FG=1 .hao123.com / 1560443017
<Cookie __bsi=6671906315530985296_00_74_N_N_205_0303_c02f_Y for .www.hao123.com/>
__bsi 6671906315530985296_00_74_N_N_205_0303_c02f_Y .www.hao123.com / 1528910617
<Cookie hz=0 for .www.hao123.com/>
hz 0 .www.hao123.com / None
<Cookie ft=1 for www.hao123.com/>
ft 1 www.hao123.com / 1528991999
<Cookie v_pg=normal for www.hao123.com/>
v_pg normal www.hao123.com / None

  

猜你喜欢

转载自www.cnblogs.com/karl-python/p/9180962.html