事情起源:
  一次无聊的想要做点东西,发现数据库没点东西,然后就想到去糗百爬点东西,然后就开始了入坑。。。
工具:Python3 scrapy框架

想起以前的爬虫经历,几乎没遇到过什么防爬虫措施,于是就直接开始了调试准备get√xpath表达式的时候,有了第一个坑,

scrapy shell http://www.qiushibaike.com/text/

然后!果断报错了,

然而我竟然就去谷歌 twisted 框架的这个错误,结果可想而知没有答案,最后突然想到一点,好像。。。糗百一直被作为爬虫入门博客的例子。。。估计是被爬怕了,加了 反爬虫机制,,,

'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate',
'Cookie':'''_xsrf=2|da663c38|074b39a46ce47715d5a3376af4b154b7|1490869563; _qqq_uuid_="2|1:0|10:1490869563|10:_qqq_uuid_|56:ZGY2MzY5ZmI1MTJkNmIzZjQ1ODM1YTVlYTE4NjQ0ZjBhOWEzMmViNg==|cc49d57f4513ac2d3d35b453fe41b11c35c66ac1eb6f214ad7f81f013e3789ba"; Hm_lvt_2670efbdd59c7e3ed3749b458cafaa37=1490869564; Hm_lpvt_2670efbdd59c7e3ed3749b458cafaa37=1490869564; _ga=GA1.2.136222138.1490869564; _gat=1''',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'If-None-Match': "9de88e87dd2d3140edc8af02a7bc9516598bc9fc"
}

好了,

scrapy shell http://www.qiushibaike.com/text/

爬虫调试没问题了,next, 写好了一切逻辑后,代码如下:

# -*- coding: utf-8 -*-
import scrapy
from qiushibaike.items import TextItem

class TextSpider(scrapy.Spider):
    name = "text"
    allowed_domains = ["qiushibaike.com"]
    start_urls = ['http://qiushibaike.com/text/page/1']

    def parse(self, response):
        item = TextItem()
        li = response.xpath('''//*[@class='content']/span''')
        liContent = list()
        for i in li:
            liContent.append(''.join(i.xpath('text()').extract()))
        item['content'] = liContent
        yield item

        #提取出下一页链接
        nextPage = response.xpath("//*[@class='next']/parent::a/@href").extract()
        if len(nextPage) > 0:
            nextPage = 'http://www.qiushibaike.com' + nextPage[0]
            yield scrapy.Request(nextPage, callback=self.parse)

scrapy crawl text  

这里去糗百网站看了,text这个栏目是有35页的,但我爬到第12页就报错了, ,

AUTOTHROTTLE_ENABLED = True #开启scrapy的自动限速扩展 注:默认不开启,False
# The initial download delay
AUTOTHROTTLE_START_DELAY = 5 #爬虫启动等待时间,单位秒
# The maximum download delay to be set in case of high latencies
AUTOTHROTTLE_MAX_DELAY = 60 # 爬虫最大等待时间,这里是照搬官网,用不到这个设置
DOANLOAD_DELAY = 5 # 爬虫中间下载件每次下载的间隔时间
CONCURRENT_REQUESTS_PER_DOMAIN = 1 # 爬虫的对单个IP进行并发请求的最大值

如此,爬虫便可以爬完35页了, 缺点:速度贼慢!

总结:以前爬一些小网站没有这些对应的反爬虫措施,倒是大意了,作为一只爬虫,最基本的怎能不伪装成浏览器呢。。。