Python使用Fiddler+Postman+requests爬取各国国旗(内附教程)
介绍
本篇文章将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容。
为了知道POST方法所需要传递的HTTP请求头部和请求体,我们可以使用Fiddler来进行抓包,抓取上网过程中HTTP请求中的POST方法。为了验证Fiddler抓取到的POST请求,可以使用Postman进行测试验证。在Postman中完成测试后,我们就可以用Python的request.POST()方法来写我们的爬虫了。
流程
作为上述过程的一个演示,我们使用的网址为: http://country.911cha.com/ , 页面如下:
在表单中输入德国,跳转后的页面如下:
我们可以发现,在搜索的结果中,会出现德国这个搜索结果。点击该搜索结果,跳转后的页面如下:
在这个页面中有我们需要的德国的国旗。但是,怎么知道该网页的具体网址呢?换句话说,就是怎样得到http://country.911cha.com/GER... ?别担心,在刚才出来的德国这个搜索结果中,我们查看其源代码,不难发现,在HTML源代码中,有我们想要的东西:
在源代码中我们能看到“GER.html”,这就意味着,只要得到搜索的结果,我们可以分析HTML源码来得到这个搜索结果的连接网址,然后在该连接网址中获取该国的国旗。所以,在这个爬虫中,最困难的地方在于,如何获取搜索结果?即,得到提交表单后的结果,也就是POST方法提交后的响应结果。我们利用Fiddler来抓取该POST方法。
我们打开Fiddler, 同时重复上面的操作,可以得到该过程的HTTP请求,如下图:
Fiddler帮助我们找到了刚才提交表单过程中的一个POST请求,具体分析该POST请求,其请求头部如下:
其请求体如下:
为了验证Fiddler抓取的POST请求,我们需要要Postman来进行测试。在用Postman进行测试前,我们需要问:是否所有请求头部中的数据都需要呢?答案是否定的,实际上,我们只需要User-Agent和Content-Type即可。在Postman中,先输入请求头部,如下:
再输入请求体,如下:
点击"SEND"按钮,得到响应后的结果,如下:
OK,这样我们就完成了Postman的测试。
爬虫
于是,借助这些信息来完成request.post()的提交,同时,借助BeautifulSoup来解析网页,得到国家的国旗下载地址并完成下载。具体的Python代码如下:
其中countries.txt的部分内容如下:
运行上述Python代码,我们发现在E盘的flag文件夹下,已经下载了各个国家的国旗,如下:
这样我们就完成了本次爬虫的任务!
最后,想学习Python的小伙伴们!
请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!
pytyhon学习资料
python学习资料