前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者: Eastmount
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
我们在编写Python爬虫时,有时会遇到网站拒绝访问等反爬手段,比如这么我们想爬取蚂蚁短租数据,它则会提示“当前访问疑似黑客攻击,已被网站管理员设置为拦截”提示,如下图所示。此时我们需要采用设置Cookie来进行爬取,下面我们进行详细介绍。非常感谢我的学生承峰提供的思想,后浪推前浪啊!
一. 网站分析与爬虫拦截
当我们打开蚂蚁短租搜索贵阳市,反馈如下图所示结果。
![ef7f84e0221090f004d5a2fef2a9a15f.png](https://i-blog.csdnimg.cn/blog_migrate/53e4952f658c655a6e08e2bf285c6fab.jpeg)
我们可以看到短租房信息呈现一定规律分布,如下图所示,这也是我们要爬取的信息。
![eb65a4222ad53c34eda9cdc0a76a291f.png](https://i-blog.csdnimg.cn/blog_migrate/e578e8d8aa83b5b7a99a0e78a7702b77.jpeg)
通过浏览器审查元素,我们可以看到需要爬取每条租房信息都位于<dd></dd>节点下。
![61c0185bd9bac254f96d1a2a6a4b2f2d.png](https://i-blog.csdnimg.cn/blog_migrate/6b3850b2c2363dbd124774eb8caf2f6e.jpeg)
在定位房屋名称,如下图所示,位于<div class="room-detail clearfloat"></div>节点下。
![7e6ee80d72bf806ab8f6347778aa9d40.png](https://i-blog.csdnimg.cn/blog_migrate/06f638ca66abf8e8264efd8bceae1e0e.jpeg)
接下来我们写个简单的BeautifulSoup进行爬取。
# -*- coding: utf-8 -*-
但很遗憾,报错了,说明蚂蚁金服防范措施还是挺到位的。
![409da56adf16c2cf77f81172cc93561f.png](https://i-blog.csdnimg.cn/blog_migrate/98a1dae037497891c7fa00d215cf287e.jpeg)
二. 设置Cookie的BeautifulSoup爬虫
添加消息头的代码如下所示,这里先给出代码和结果,再教大家如何获取Cookie。
# -*- coding: utf-8 -*-
输出结果如下图所示:
页码
![6d155826ac39043d9576b7abc715c34a.png](https://i-blog.csdnimg.cn/blog_migrate/f1bdec2918428d2bf72ea554f21d611b.jpeg)
接下来我们想获取详细信息
![44c9e22c074ee76de8d8554f4953438e.png](https://i-blog.csdnimg.cn/blog_migrate/bb907d0ce022df8cf2a90ff187b46ef3.jpeg)
这里作者主要是提供分析Cookie的方法,使用浏览器打开网页,右键“检查”,然后再刷新网页。在“NetWork”中找到网页并点击,在弹出来的Headers中就隐藏这这些信息。
![8336133b4cbefe5e0a7c3adff58ebfa6.png](https://i-blog.csdnimg.cn/blog_migrate/4ca5879d050c08fde46a1d485a8555c9.jpeg)
最常见的两个参数是Cookie和User-Agent,如下图所示:
![b63b4012b006ffabf1dccc3728238af7.png](https://i-blog.csdnimg.cn/blog_migrate/bfdb8192210721e606e1127e89bb3fb2.jpeg)
然后在Python代码中设置这些参数,再调用Urllib2.Request()提交请求即可,核心代码如下:
user_agent
注意,每小时Cookie会更新一次,我们需要手动修改Cookie值即可,就是上面代码的cookie变量和user_agent变量。完整代码如下所示:
import
输出结果如下,存储本地CSV文件:
![9feaba7b761089729d4608fd3a27689c.png](https://i-blog.csdnimg.cn/blog_migrate/6298c19aac22de86f704d5440d09538b.jpeg)
同时,大家可以尝试Selenium爬取蚂蚁短租,应该也是可行的方法。最后希望文章对您有所帮助,如果存在不足之处,请海涵~