当他们用403阻止我时,我正在爬网。我仍然可以从任何浏览器访问该网站,但是我的Scrapy脚本无法爬网。
我使用5个代理从家里爬网,每个代理都有10个IP被随机选择。我大约有40个user_agents是随机选择的(请参见下面的代码)。在每个请求上都会选择一组新的代理和user_agent。每个产量要求约为1MB。当收集到大约100个请求时,脚本(使用Github的S3pipelines)将一个程序包发送到我在AWS上的S3。我的下载延迟为10,在Scrapy项目的设置中激活了自动油门。所有与网站robots.txt请求保持一致的请求-延迟10进行爬网。
我阅读了Scrapy,Python和其他一些人的说明手册,但找不到任何方法来使自己在爬网中变得更加“人性化”。
我的设置(摘录):
BOT_NAME = 'acCrawler10'
SPIDER_MODULES = ['acCrawler10.spiders']
NEWSPIDER_MODULE = 'acCrawler10.spiders'
s3 = boto3.client('s3', aws_access_key_id='AWS_ACCESS_KEY_ID',
aws_secret_access_key='AWS_SECRET_ACCESS_KEY')
USER_AGENT = get_random_agent()
# Obey robots.txt rules
ROBOTSTXT_OBEY = True
CONCURRENT_REQUESTS = 32
DOWNLOAD_DELAY = 10
PROXYMESH_TIMEOUT = 60
# CONCURRENT_REQUESTS_PER_DOMAIN = 16
CONCURRENT_REQUESTS_PER_IP = 16
# Disable cookies (enabled by default)
# COOKIES_ENABLED = False
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 5
AUTOTHROTTLE_MAX_DELAY = 60
AUTOTHROTTLE_TARGET_CONCURRENCY = 4.0
AUTOTHROTTLE_DEBUG = False