赞
踩
前文回顾
亲爱的各位看官们,看到这篇文章的时候,我们的爬虫之旅马上就要告一段落了。如果你支持我的博客,请点赞关注并分享。如果你觉得在下写的好,有钱的捧个钱场,没钱的捧个人场。我的博客都是公开的,也就是说,不要钱随便看的。当然如果阁下略微施舍点,在下也感激不尽。好了,闲言少叙,书归正文。
class RandomProxyMiddleware(object):
def process_request(self, request, spider):
request.meta["proxy"] = get_random_proxy()
上面程序通过自定义的下载中间件为Scrapy设置了代理服务器,程序中的get_random_proxy()函数需要返回代理服务器的IP地址和端口号,这就需要你事先准备好一系列的代理服务器了,然后这个函数在代理服务器中,随机选一个。
第二步:通过setting.py文件设置启动自定义的下载中间件,在setting.py文件中增加如下配置代码。
DOWNLOADER_MIDDLEWARES = {
'spider_name.middlewares.RandomProxyMiddleware':543
}
COOKIES_ENABLED = False
User-agent: *
Disallow: /scripts
Disallow: /public
Disallow: /css/
Disallow: /images/
Disallow: /content/
Disallow: /ui/
Disallow: /js/
Disallow: /scripts/
Disallow: /article_preview.html*
Disallow: /tag/
Disallow: /*?*
Disallow: /link/
Sitemap: http://www.csdn.net/article/sitemap.txt
查看方法也一并送给你,只需要在浏览地址栏上输入:
http://你查看的网址/robots.txt
以CSDN为例,你就可以看到如下结果:
上面有个user-agent:*,这个表示接收所有爬虫。但有的不是啊,例如微博的,就是user-agent:baiduspider,这表示只接受百度的爬虫。但是就算你再怎么牛,天下没有攻不破的网站。你可以强行抓取某个网站站点信息,但是需要再setting.py文件中取消如下代码注释来完成:
ROBOTSTXT_OBEY = False
AUTOTHROTTLE_ENABLED = True # 节流阀自动开启,即访问频率限制开启
AUTOTHROTTLE_START_DELAY = 5 # 设置访问开始的延迟
AUTOTHROTTLE_MAX_DELAY = 60 # 设置访问之间的最大延迟
AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 # 设置框架发送给服务器的请求数量
DOWNLOAD_DELAY = 3 # 设置下载之后的自动延迟
小虫子的最高境界就是让别人不知道他是一个小虫子,而且认为小虫子就是一个人。模仿人类行为的爬虫,才是最高明的爬虫。当然,还有很多我没有说,比如有的网站,访问时需要登陆自己的用户信息和密码,其实这个也是request的应用,学好网站架构就会明白怎么搞了。这里提供一个方向,你大可去了解selenium包,里面有你要的东西。
下一节,将说说总结,已经没有什么实质的技术内容,主要是思想。学到这里的人大可不必去看后面的东西了,但是后面的内容犹如鸡肋,食之无味,弃之可惜。
谢各位了,告辞了!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。