为什么每次爬虫获取的数据量都不一样?
关注者
43被浏览
19,143登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏
因为目标网站有反爬虫策略(ban),对方根据你的访问频率和IP判断你是爬虫,而不是正常的浏览。所以介绍3个常用的防ban的策略给你:
1、设置随机漫步。访问间隔时间可以设为一个服从正态分布的随机数,模拟人类浏览网页的频率。
2、设置爬虫的工作周期。深更半夜就停止工作,早上就开始工作,尽量模拟人类的作息。
3、搭建集群,分布式爬虫。这样访问的IP会不固定,对方不容易判断出你是爬虫。这个开发成本就相对较高了。推荐NUTCH框架。
针对scrapy,可以在setting.py里设置bot_name,user_agent伪装成浏览器,同时拒绝COOKIE,分享一下我一个scrapy项目的setting文件:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Scrapy settings for newsCrawl project
#
# For simplicity, this file contains only the most important settings by
# default. All the other settings are documented here:
#
# http://doc.scrapy.org/en/latest/topics/settings.html
#
SPIDER_MODULES = ['newsCrawl.spiders']
NEWSPIDER_MODULE = 'newsCrawl.spiders'
# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'newsCrawl (+http://www.yourdomain.com)'
BOT_NAME = 'Mac OS'
USER_AGENT = '%s/%s' % (BOT_NAME, '10_8_3')
DOWNLOAD_DELAY = 1.5
RANDOMIZE_DOWNLOAD_DELAY = True
COOKIES_ENABLED = False
CONCURRENT_ITEMS = 100