请教一下有关scrapy中crawlspider跟进网页的问题
这段时间在学习scrapy来作爬虫完,粗粗看完里tutorials之后就拿小米的招聘网站练手,一开始用最简单的scrapy.spider爬第一页多时候很简单,但是在改成crawlspider爬完所有的招聘信息的时候就不知道为什么进行不下去了,不仅不跟进,第一个网页也不爬了,一开始怀疑是rules除了问题,但是用shell测试过可以得到后续多链接,所以我很疑惑,希望能有大神指教。
spider部分的代码如下
然后运行之后的部分信息
2015-07-31 23:16:32 [scrapy] INFO: Scrapy 1.0.1 started (bot: xiaomihr)
2015-07-31 23:16:32 [scrapy] INFO: Optional features available: ssl, http11
2015-07-31 23:16:32 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'xiaomihr.spiders', 'FEED_FORMAT': 'csv', 'SPIDER_MODULES': ['xiaomihr.spiders'], 'FEED_URI': 'items.csv', 'BOT_NAME': 'xiaomihr'}
2015-07-31 23:16:32 [py.warnings] WARNING: :0: UserWarning: You do not have a working installation of the service_identity module: 'No module named service_identity'. Please install it from <https://pypi.python.org/pypi/service_identity> and make sure all of its dependencies are satisfied. Without the service_identity module and a recent enough pyOpenSSL to support it, Twisted can perform only rudimentary TLS client hostname verification. Many valid certificate/hostname mappings may be rejected.
2015-07-31 23:16:32 [scrapy] INFO: Enabled extensions: CloseSpider, FeedExporter, TelnetConsole, LogStats, CoreStats, SpiderState
2015-07-31 23:16:32 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats
2015-07-31 23:16:32 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2015-07-31 23:16:32 [scrapy] INFO: Enabled item pipelines:
2015-07-31 23:16:32 [scrapy] INFO: Spider opened
2015-07-31 23:16:32 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2015-07-31 23:16:32 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2015-07-31 23:16:32 [scrapy] DEBUG: Crawled (200) <GET http://hr.xiaomi.com/job/list> (referer: None)
2015-07-31 23:16:32 [scrapy] INFO: Closing spider (finished)
spider部分的代码如下
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from xiaomihr.items import XiaomihrItem
class XiaomihrSpider(CrawlSpider):
name = "xiaomihr"
allowed_domains = ["http://hr.xiaomi.com"]
start_urls = ["http://hr.xiaomi.com/job/list"]
rules = [
Rule(LinkExtractor(allow = ('/job/list/.*',),restrict_xpaths=('//a[@number="numbers last"]')), callback='parse_item') #提取下一页中的链接,跟进到下一页
]
def parse_item(self, response):
self.logger.info('Now is spidering in this page: %s', response.url)
base = response.xpath('//div[@class="bd bd-table-list"]//tr')
for sel in base:
item = XiaomihrItem()
item['work'] = sel.xpath('td[1]/a/text()').extract()
item['worktype'] = sel.xpath('td[2]/text()').extract()
item['location'] = sel.xpath('td[3]/text()').extract()
item['detail_link'] = sel.xpath('td[1]/a/@href').extract()
return item
然后运行之后的部分信息
2015-07-31 23:16:32 [scrapy] INFO: Scrapy 1.0.1 started (bot: xiaomihr)
2015-07-31 23:16:32 [scrapy] INFO: Optional features available: ssl, http11
2015-07-31 23:16:32 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'xiaomihr.spiders', 'FEED_FORMAT': 'csv', 'SPIDER_MODULES': ['xiaomihr.spiders'], 'FEED_URI': 'items.csv', 'BOT_NAME': 'xiaomihr'}
2015-07-31 23:16:32 [py.warnings] WARNING: :0: UserWarning: You do not have a working installation of the service_identity module: 'No module named service_identity'. Please install it from <https://pypi.python.org/pypi/service_identity> and make sure all of its dependencies are satisfied. Without the service_identity module and a recent enough pyOpenSSL to support it, Twisted can perform only rudimentary TLS client hostname verification. Many valid certificate/hostname mappings may be rejected.
2015-07-31 23:16:32 [scrapy] INFO: Enabled extensions: CloseSpider, FeedExporter, TelnetConsole, LogStats, CoreStats, SpiderState
2015-07-31 23:16:32 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats
2015-07-31 23:16:32 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2015-07-31 23:16:32 [scrapy] INFO: Enabled item pipelines:
2015-07-31 23:16:32 [scrapy] INFO: Spider opened
2015-07-31 23:16:32 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2015-07-31 23:16:32 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2015-07-31 23:16:32 [scrapy] DEBUG: Crawled (200) <GET http://hr.xiaomi.com/job/list> (referer: None)
2015-07-31 23:16:32 [scrapy] INFO: Closing spider (finished)
...全文
相关推荐
Python使用scrapy爬取阳光热线问政平台过程解析
**规则定义**:通过`rules`属性定义链接的跟进规则及回调函数。4.
scrapy使用crawlspider
crawlspider介绍 CrawlSpider它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则Rule来提供跟进链接的方便的机制,从爬取的网页结果中获取链接并继续爬取的工作 举个简单的例子说明,我们需要提取下面的网站中每篇文章中的一些数据,如果每一页提取,只能提取基本的数据,而文章的作者,标题,内容,评论等信息都...
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
#### 二、CrawlSpider简介`CrawlSpider`是Scrapy框架中的一种特殊类型的爬虫,主要用于复杂网站的爬取。
Python爬虫Scrapy框架CrawlSpider原理及使用案例
本文主要介绍了Python爬虫框架Scrapy中的CrawlSpider的原理及使用案例,探讨了如何通过CrawlSpider高效地爬取网站数据,特别是对于“糗百”全站数据的爬取。在爬取网站数据
17_基于Scrapy的CrawlSpider实现爬虫.zip
【标题】"17_基于Scrapy的CrawlSpider实现爬虫.zip" 涉及的是使用Python中的Scrapy框架来构建爬虫的过程,特别是利用CrawlSpider子类进行更复杂的爬取任务。


