首先先向小伙伴介绍一下HTTP中GET和POST
教小伙伴们写爬虫,通过POST获取网页内容
使用POST的原因:
GET是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。如果数据量不大(GET方式数据量限制1K),不带有保护数据的情况下使用GET方式访问WEB服务器;但是如果数据量大,而且带有需要保护的数据时使用POST方式访问WEB服务器。如果浏览器传送服务器的数据量超过1K,应使用POST方式访问服务器,因为POST方式向服务器传送是数据时,会先把传送的数据打包发送到WEB服务器。
编写爬虫:
了解了使用POST的原因,相信小伙伴们应该都明白哪种网页会使用POST。如下就是 中国铁路12306 的一个注册界面,注册界面包含了身份证、手机号、真实姓名这些非常重要的个人隐私,因此不能使用GET,只能使用POST。
打开这个页面后,按下F12键后点开NetWork(也就是图片中黑色部分的颜色加深部分),在这里可以清晰的看到URL和Requests Method,从而也得知了该页面就是通过POST从服务器传输的。
url = "https://kyfw.12306.cn/otn/ip/sec"
复制Form Dat中的所有内容,在Jupyter中写成字典
# -*- coding: utf-8 -*-
import requests
payload = {
'sig': '_6ad953cbe26b56bd9e4004ba081eef91e0d6e526a8f6bbeb1c84f7793946edc2bc4639a912bacef125f91dcf7b69a96f149bfa98ff0b2b9e550a64f0e33ec087eefb32133677856e6771555a5d60be012b5a9f23cd65fe8bbfbfc55872132578f449a3f15e7e92fc729273c0dea849249ce84343fd7183e7715ada090dd3dcc4026eae4920a2fe4d4c9bb77bdc285795cb2cb863c9835cab5be140482299f3f1d323279f801b550b',
'data': '5G835R+BLir6khLbmwPRYJ6fyZus4Wv7dJy+ajcBs7EFRs35MULC7uZaqv01g3jB4mNxMseIkNs1Cf2VNBqVhy89ttOt91V11EL74Lrl1686N1qpyLoF/qMqI6ysE6Z1nT7fSNcjK3s8O3Eaw6bDcnnalNpdycwuFpTUOXArGjGQvJnmdvvMMZtsr2td2rY85RfHk1CWg5Z/AWIi9pYMwP4uhr06d6sW2MHhnohePirxeVT9qDqT97Bt0Knk1oHlKMutgCudBcdZNsb3G34m/Tsayy9dWZXnX6l9D3X4AZgTL+876