Найти - Пользователи
Полная версия: парсинг сайта на scrapy
Начало » Data Mining » парсинг сайта на scrapy
1
bor1k_by
Всем доброго дня. возникла проблема по парсингу сайта на scrapy .
from scrapy.spider import Spider
from scrapy.selector import Selector
from scrapy.http import Request
from workopolis.items import Node
import time
import re
class apply(Spider):
	name = "apply_spider"
	lang = ''
	rowFrom = ''
	location = ''
	title = ''
	city = ''
	description = ''
	category = ''
	job_id = ''
	driver = None
	start_urls = [
		'https://apply.firstgroupcareers.com/vacancy/find/results/'
		]
	
	url_app = 'https://apply.firstgroupcareers.com/vacancy/jobecode/description/'
	def parse(self, response):
		
		hxs = Selector(response)
		
		jobs = hxs.xpath('//*[@class="rowContainerHolder"]')
		items = []
		
		for job in jobs:
			item = Node()
			x = job
		
		item['title'] = hxs.xpath("string(.//*[contains(@class,'rowHeader')])").extract()[0]
		url = html.xpath("string(.//*[contains(@class,'rcMenu')]//a").extract()[0]
		item['job_id'] = re.search('jobId=([0-9]+)', url).groups()[0]
		item['apply_url'] = self.url_app.replace('jobecode',item['job_id'])
		g = item['title'].split('-')
		item['title'] = g[1]
		item['city'] = g[0]
						
					
		print	item['apply_url']
					
		d_url = item['apply_url']
				
				
					
		request = Request(d_url, callback=self.parse_details)
		request.meta['item'] = item
		items.append(request)
				
		for item in items:
			
			yield item
	def parse_details(self,response):
		html = Selector(response)
		item = response.meta['item']
		item['description'] = html.xpath(".//*[contains(@class,'earcu_posdescriptionnote')]").extract()[0]
		item['language'] = 'en'
		item['state'] = html.xpath(".//*[contains(@class,'jobSumValue')]").extract()[0]
		
		
		
		
		return item


до этого пользовался силениум питоном и использовал webdriver, а на этом сайте ссылка не яваскрипт и нужно сделать без него,а также контент сайта содержится не в таблице ,а в дивах.
а также не знаю как вынуть из сайта job_id (из самой ссылки). вообщем,если кто понимает в этом,посмотрите ,пожалуйста
конкретно сейчас ошибка :
local variable ‘item’ referenced before assignment
py.user.next
bor1k_by
конкретно сейчас ошибка :
local variable ‘item’ referenced before assignment

Это означает то, что и написано. Что ты где-то обращаешься к переменной, когда она не создана.

bor1k_by
for job in jobs:
    item = Node()
    x = job

item['title'] =
Если в jobs нет элементов, item не создастся; следовательно, дальнейшие обращения к ней обращаются к тому, чего нет.
bor1k_by

py.user.next
А как тогда быть?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB