У меня есть код ScraPy, который работает в оболочке, но когда я пытаюсь экспортировать его в csv, он возвращает пустой файл. Он экспортирует данные, когда я не вхожу в ссылку, и пытаюсь разобрать описание, но как только я добавлю дополнительный метод анализа содержимого, он не сработает. Вот код:ScraPy spider сканирует, но не экспортирует
class MonsterSpider(CrawlSpider):
name = "monster"
allowed_domains = ["jobs.monster.com"]
base_url = "http://jobs.monster.com/v-technology.aspx?"
start_urls = [
"http://jobs.monster.com/v-technology.aspx"
]
for i in range(1,5):
start_urls.append(base_url + "page=" + str(i))
rules = (Rule(SgmlLinkExtractor(allow=("jobs.monster.com",))
, callback = 'parse_items'),)
def parse_items(self, response):
sel = Selector(response)
sites = sel.xpath('//div[@class="col-xs-12"]')
#items = []
for site in sites.xpath('.//article[@class="js_result_row"]'):
item = MonsterItem()
item['title'] = site.xpath('.//span[@itemprop = "title"]/text()').extract()
item['company'] = site.xpath('.//span[@itemprop = "name"]/text()').extract()
item['city'] = site.xpath('.//span[@itemprop = "addressLocality"]/text()').extract()
item['state'] = site.xpath('.//span[@itemprop = "addressRegion"]/text()').extract()
item['link'] = site.xpath('.//a[@data-m_impr_a_placement_id= "jsr"]/@href').extract()
follow = ''.join(item["link"])
request = Request(follow, callback = self.parse_dir_contents)
request.meta["item"] = item
yield request
#items.append(item)
#return items
def parse_dir_contents(self, response):
item = response.meta["item"]
item['desc'] = site.xpath('.//div[@itemprop = "description"]/text()').extract()
return item
вынимая parse_dir_contents и раскомментирован пустой список «списков» и «добавить» код был исходный код.
спасибо! это создало выход, но теперь поля немного перепутались. придется устранить проблему, чтобы получить правильный вывод, но это устранило проблему. – genghistong