python写的爬虫,抓取百度的搜索结果,被屏蔽了怎么办

很多人学用python用得最多的还是各類爬虫脚本:有写过抓代理本机验证的脚本,有写过自动收邮件的脚本还有写过简单的验证码识别的脚本,那么我们今天就来总结下python爬蟲抓站的一些实用技巧

写过的这些脚本有一个共性,都是和web相关的总要用到获取链接的一些方法,累积不少爬虫抓站的经验在此总結一下,那么以后做东西也就不用重复劳动了

然后生成http请求,再发送请求:

 

于是在Fetcher初始化时便会自动登录 VeryCD 网站

如此,以上就是总结python爬蟲抓站的实用技巧的全部内容了本文内容代码简单,使用方便性能也不俗,相信对各位使用python有很大的帮助

}

今天想对一个问题进行分析和讨論就是关于爬虫对网站页面爬取的问题,有些网站通过爬虫去采集其它的网站页面信息作为己用大量的爬取行为会对web服务器有比较性能有影响,主要的表现就是会变得很慢

对于如何防止网站被爬取,我想从以下几种方法去分析:

1.基于程序本身去防止爬取:作为爬虫程序爬取行为是对页面的源文件爬取,如爬取静态页面的html代码可以用jquery去模仿写html,这种方法伪装的页面就很难被爬取了不过这种方法对程序员的要求很高。

2.基于iptables和shell脚本:可以对nginx的access.log进行策略定义例如定义在1分钟内并发连接数超过30个ip为非法,如ip不在白名单内则加入iptables策略封掉,当然这种的缺点是会有“误伤”策略细粒度越小就会有更多的“误伤”,细粒度大就会使效果变差另外还有类似的第三方工具fail2ban,利用做filter和actor对一些有危害的操作记录或是封ip但是对于某个特定的爬虫地址(例如网易、有道)的爬取行为拒绝也很难准确做到,因为你无法准确知道这些特定的爬虫ip地址(例如网易、有道)以下是我的定位方式,不过发现由于ip库不准确造成错误的屏蔽注意:建议不要用葑ip条目的方式,iptables列表长度是65535时就会封满,服务器也就会死机

#日志中大部分蜘蛛都有spider的关键字,但是百度的不能封所以过滤掉百度

# 如果一尛时内,发包不超过30个就要解封

3.使用robots.txt文件:例如阻止所有的爬虫爬取但是这种效果不是很明显。

4.使用nginx的自带功能:通过对httpuseragent阻塞来实现包括GET/POST方式的请求,以nginx为例具体步骤如下:

注意语法:~*表示是大小写不敏感,~表示是大小写敏感


}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信