分享

Python使用Fiddler Postman requests爬取各国国旗

 雨润心田品风雨 2019-03-17

介绍

本篇文章将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容。

为了知道POST方法所需要传递的HTTP请求头部和请求体,我们可以使用Fiddler来进行抓包,抓取上网过程中HTTP请求中的POST方法。为了验证Fiddler抓取到的POST请求,可以使用Postman进行测试验证。在Postman中完成测试后,我们就可以用Python的request.POST()方法来写我们的爬虫了。

流程

作为上述过程的一个演示,我们使用的网址为: http://country.911cha.com/ , 页面如下:

Python使用Fiddler+Postman+requests爬取各国国旗

在表单中输入德国,跳转后的页面如下:

Python使用Fiddler+Postman+requests爬取各国国旗

我们可以发现,在搜索的结果中,会出现德国这个搜索结果。点击该搜索结果,跳转后的页面如下:

Python使用Fiddler+Postman+requests爬取各国国旗

在这个页面中有我们需要的德国的国旗。但是,怎么知道该网页的具体网址呢?换句话说,就是怎样得到http://country.911cha.com/GER... ?别担心,在刚才出来的德国这个搜索结果中,我们查看其源代码,不难发现,在HTML源代码中,有我们想要的东西:

Python使用Fiddler+Postman+requests爬取各国国旗

在源代码中我们能看到“GER.html”,这就意味着,只要得到搜索的结果,我们可以分析HTML源码来得到这个搜索结果的连接网址,然后在该连接网址中获取该国的国旗。所以,在这个爬虫中,最困难的地方在于,如何获取搜索结果?即,得到提交表单后的结果,也就是POST方法提交后的响应结果。我们利用Fiddler来抓取该POST方法。

我们打开Fiddler, 同时重复上面的操作,可以得到该过程的HTTP请求,如下图:

Python使用Fiddler+Postman+requests爬取各国国旗

Fiddler帮助我们找到了刚才提交表单过程中的一个POST请求,具体分析该POST请求,其请求头部如下:

Python使用Fiddler+Postman+requests爬取各国国旗

其请求体如下:

Python使用Fiddler+Postman+requests爬取各国国旗

为了验证Fiddler抓取的POST请求,我们需要要Postman来进行测试。在用Postman进行测试前,我们需要问:是否所有请求头部中的数据都需要呢?答案是否定的,实际上,我们只需要User-Agent和Content-Type即可。在Postman中,先输入请求头部,如下:

Python使用Fiddler+Postman+requests爬取各国国旗

再输入请求体,如下:

Python使用Fiddler+Postman+requests爬取各国国旗

点击'SEND'按钮,得到响应后的结果,如下:

Python使用Fiddler+Postman+requests爬取各国国旗

OK,这样我们就完成了Postman的测试。

爬虫

于是,借助这些信息来完成request.post()的提交,同时,借助BeautifulSoup来解析网页,得到国家的国旗下载地址并完成下载。具体的Python代码如下:

Python使用Fiddler+Postman+requests爬取各国国旗

其中countries.txt的部分内容如下:

Python使用Fiddler+Postman+requests爬取各国国旗

运行上述Python代码,我们发现在E盘的flag文件夹下,已经下载了各个国家的国旗,如下:

Python使用Fiddler+Postman+requests爬取各国国旗

这样我们就完成了本次爬虫的任务!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多