python学习笔记(八)scrapy功能

问题:

解决办法

        div_list = response.xpath('//div[@class="list-item box"]/div/h3')
        for div in div_list:
            print(''.join(div.xpath('.//text()').extract()).replace('/n','').rstrip().lstrip())

结果 

解释

 - `rstrip()` 方法从字符串末尾开始扫描,并删除所有位于末尾的空格或指定字符。如果没有提供任何参数,则默认删除空格。 - `lstrip()` 方法从字符串开头开始扫描,并删除所有位于开头的空格或指定字符。如果没有提供任何参数,则默认删除空格。

最大爬取深度

# settings
'RETRY_TIMES': 8,
'DEPTH_LIMIT': 2,

retry_times 和 depth_limit之间的关系。
因为在retry的过程中,会累计 depth,当超过 depth_limit 时,这个页面就会被抛弃掉。

参数 dont_redirect

dont_redirect:指这个请求是否允许重定向。默认值为:False,允许重定向

导致网页重定向的原因,一般有如下几个:

第一,网页自身就是一个跳转页面。
第二,这个网页分为电脑版和移动版,站点会根据用户的访问数据(user-agent)来决定返回给用户哪种网页。

scrapy定时关闭

CLOSESPIDER_TIMEOUT(秒):在指定时间过后,就终止爬虫程序.
CLOSESPIDER_ITEMCOUNT:抓取了指定数目的Item之后,就终止爬虫程序.
CLOSESPIDER_PAGECOUNT:在收到了指定数目的响应之后,就终止爬虫程序.
CLOSESPIDER_ERRORCOUNT:在发生了指定数目的错误之后,就终止爬虫程序.


redis

进行网页去重,做分布式爬虫的基础。

class ClawernameSpider(scrapy.Spider):
    # 定制化设置
    custom_settings = {
        'LOG_LEVEL': 'DEBUG',  # Log等级,默认是最低级别debug
        # ………………
        # 利用redis对网页去重的设置项
        'DUPEFILTER_CLASS': "scrapy_redis.dupefilter.RFPDupeFilter",
        'SCHEDULER': "scrapy_redis.scheduler.Scheduler",
        'SCHEDULER_PERSIST': False,  
# Don't cleanup redis queues, allows to pause/resume crawls.
运行redis-cli.exe,然后执行flushdb *清除掉redis中的记录,以免之前没爬取成功的页面,在下次爬取时被忽略掉了。
 
        # ………………
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值