龙空技术网

python爬虫之路3-POST请求Ajax动态加载获取

互联网奇点 503

前言:

当前姐妹们对“ajax动态获取”大致比较注重,各位老铁们都想要了解一些“ajax动态获取”的相关知识。那么小编同时在网摘上收集了一些有关“ajax动态获取””的相关文章,希望咱们能喜欢,我们一起来学习一下吧!

POST请求:

浏览器的一次Request请求对象的里有data参数,它就是用在POST里的,我们要要往服务器里传送的数据就是这个参数data,data参数的数据类型是一个字典,里面要匹配键值对。正常情况下是要进行对data编码转化。

模拟有道词典翻译网站的每一次请求的url:

通过使用Fiddler观察,其中有一条是POST请求,向服务器发送的请求数据并不是在url里,那么我们可以试着模拟这个POST请求。我们可以尝试用POST方式发送请求。

发送POST请求时,需要特别注意headers的一些属性:

Content-Length: 144: 是指发送的表单数据长度为144,也就是字符个数是144个。

X-Requested-With: XMLHttpRequest :表示Ajax异步请求。

Content-Type: application/x-www-form-urlencoded : 表示浏览器提交 Web 表单时使用,表单数据会按照 name1=value1&name2=value2 键值对形式进行编码。

获取AJAX加载的内容

有些网页内容使用AJAX加载,只要记得,Ajax一般返回的是JSON,直接对Ajax地址进行post或get,就返回JSON数据了。"作为一名爬虫工程师,你最需要关注的,是数据的来源",既浏览器和服务器交互过程中发生了什么改变导致返回信息的不同。

问题:为什么有时候POST也能在URL内看到数据?GET方式是直接以链接形式访问,链接中包含了所有的参数,服务器端用Request.QueryString获取变量的值。如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。POST则不会在网址上显示所有的参数,服务器端用Request.Form获取提交的数据,在Form提交的时候。但是HTML代码里如果不指定 method 属性,则默认为GET请求,Form中提交的数据将会附加在url之后,以?分开与url分开。表单数据可以作为 URL 字段(method="get")或者 HTTP POST (method="post")的方式来发送。比如在下面的HTML代码中,表单数据将因为 (method="get") 而附加到 URL 上:处理HTTPS请求 SSL证书验证

现在随处可见 https 开头的网站,urllib2可以为 HTTPS 请求验证SSL证书,就像web浏览器一样,如果网站的SSL证书是经过CA认证的,则能够正常访问,如:等...如果SSL证书验证不通过,或者操作系统不信任服务器的安全证书,比如浏览器在访问12306网站如:的时候,会警告用户证书不受信任。(据说 12306 网站证书是自己做的,没有通过CA认证)

urllib2在访问的时候则会报出SSLError:

运行结果:urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>

所以,如果以后遇到这种网站,我们需要单独处理SSL证书,让程序忽略SSL证书验证错误,即可正常访问。机器学习视频下载:关注发私信(机器学习)可获取下载链接

标签: #ajax动态获取 #取得ajax结果