私は4日間抱えているこの問題で行き詰まりを迎えています。「 http://www.ledcor.com/careers/search-careers 」をクロールしたい。各求人情報ページ (例: http://www.ledcor.com/careers/search-careers?page=2 ) で、各求人リンクの中に入り、役職を取得します。私はこれまでのところこれを機能させています。
今、私はスパイダーを次の求人ページに移動させようとしています (ig http://www.ledcor.com/careers/search-careers?page=2 からhttp://www.ledcor.com/careers/へ) search-careers?page=3およびすべての求人をクロールします)。クロール ルールが機能せず、何が問題で何が不足しているのかわかりません。助けてください。
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from craigslist_sample.items import CraigslistSampleItem
class LedcorSpider(CrawlSpider):
name = "ledcor"
allowed_domains = ["www.ledcor.com"]
start_urls = ["http://www.ledcor.com/careers/search-careers"]
rules = [
Rule(SgmlLinkExtractor(allow=("http://www.ledcor.com/careers/search-careers\?page=\d",),restrict_xpaths=('//div[@class="pager"]/a',)), follow=True),
Rule(SgmlLinkExtractor(allow=("http://www.ledcor.com/job\?(.*)",)),callback="parse_items")
]
def parse_items(self, response):
hxs = HtmlXPathSelector(response)
item = CraigslistSampleItem()
item['title'] = hxs.select('//h1/text()').extract()[0].encode('utf-8')
item['link'] = response.url
return item
ここにItems.pyがあります
from scrapy.item import Item, Field
class CraigslistSampleItem(Item):
title = Field()
link = Field()
desc = Field()
ここに Pipelines.py があります
class CraigslistSamplePipeline(object):
def process_item(self, item, spider):
return item
更新:(@blenderの提案)クロールしません
rules = [
Rule(SgmlLinkExtractor(allow=(r"http://www.ledcor.com/careers/search-careers\?page=\d",),restrict_xpaths=('//div[@class="pager"]/a',)), follow=True),
Rule(SgmlLinkExtractor(allow=("http://www.ledcor.com/job\?(.*)",)),callback="parse_items")
]