为什么每次爬虫获取的数据量都不一样?

目标页面上有100个url,爬虫会顺着这些url进去爬取内容,有时会返回二十几条内容,有时三十几条,每次都不一样,这是什么原因造成的? 程序结构如下:…
关注者
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