Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2014 18:56:58

bor1k_by
Зарегистрирован: 2014-10-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

парсинг сайта на scrapy

Всем доброго дня. возникла проблема по парсингу сайта на 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

Отредактировано bor1k_by (Окт. 18, 2014 18:57:36)

Офлайн

#2 Окт. 18, 2014 23:55:20

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9807
Репутация: +  852  -
Профиль   Отправить e-mail  

парсинг сайта на scrapy

bor1k_by
конкретно сейчас ошибка :
local variable ‘item’ referenced before assignment

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

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

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



Отредактировано py.user.next (Окт. 18, 2014 23:57:07)

Офлайн

#3 Окт. 19, 2014 00:37:10

bor1k_by
Зарегистрирован: 2014-10-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

парсинг сайта на scrapy


py.user.next
А как тогда быть?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version