问题:
解决办法
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中的记录,以免之前没爬取成功的页面,在下次爬取时被忽略掉了。
# ………………
}