Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 2, 2012 13:15:57

Kobalt
Зарегистрирован: 2012-04-02
Сообщения: 8
Репутация: +  -1  -
Профиль   Отправить e-mail  

Scrapy-problem

Доброго времени суток. Прошу помощи у знающих мастеров клавиатуры и мышки! Проблема в следующем Паук лазает по сайту и даже дергает поле - (Имя и Год), но вот поле цены к сожелению отказывается дергать(просто его пропускает, без каких либо объяснений). Поля проверяю на возможность их нахождения на странице с помощью - FirePath(все поля благопалучно были найдены). Вот собственно исходники:

import re
from scrapy.item import Item, Field
from scrapy.contrib.loader.processor import MapCompose

class StelsItem(Item):

name = Field()
price = Field()
coll = Field()

==========================================

import re

from stels.items import StelsItem
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.loader import XPathItemLoader
from scrapy.contrib.loader.processor import Compose
from scrapy.contrib.loader.processor import MapCompose
from scrapy.contrib.loader.processor import TakeFirst
from scrapy.contrib.spiders import CrawlSpider
from scrapy.contrib.spiders import Rule
from scrapy.selector import HtmlXPathSelector

class StelsLoader(XPathItemLoader):
default_input_processor = MapCompose(lambda s: re.sub('\s+', ‘ ’, s.strip()))
default_output_processor = TakeFirst()

class StelsSpider(CrawlSpider):

name = “stels”
allowed_domains =
start_urls =

rules = (
Rule(SgmlLinkExtractor(allow'sort\.aspx\?.+')), follow=True),
Rule(SgmlLinkExtractor(allow'item\.aspx\?.+')), callback='parse_item'),
)

def parse_item(self, response):
hxs = HtmlXPathSelector(response)
l = AiteaLoader(AiteaItem(), hxs)
l.add_xpath('name', '//h1/span/text()')
l.add_xpath('price', '//span/text()')
l.add_xpath('coll', '//span/text()')
return l.load_item()

Отредактировано Kobalt (Апрель 3, 2012 16:17:09)

Офлайн

#2 Апрель 2, 2012 17:41:29

Kobalt
Зарегистрирован: 2012-04-02
Сообщения: 8
Репутация: +  -1  -
Профиль   Отправить e-mail  

Scrapy-problem

вопрос собственно в том что Поле цены не парсится, хотя с другими полями таких проблем не возникло

Офлайн

#3 Апрель 2, 2012 19:19:51

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Scrapy-problem

Вообще-то из названия лоадера и айтема понятно, что за сайт .

Можно попробовать так:

price_xpath = '(//h2/span/text())[1]'
# coll - количество? тогда
quantity_xpath = '(//h2/span/text())[2]'

Сначала думал, что можно по id'ам ориентироваться (id=“ctl00_ContentPlaceHolder1_FormView1_PriceLabel0”), но они на разных страницах меняются.

Офлайн

#4 Апрель 2, 2012 20:45:11

Kobalt
Зарегистрирован: 2012-04-02
Сообщения: 8
Репутация: +  -1  -
Профиль   Отправить e-mail  

Scrapy-problem

сделал так - l.add_xpath('price', '//span/b/span/h2/span')
только теперь загвоздка в том что выдергиваются значения такого вида
“<span id=”"ctl00_ContentPlaceHolder1_FormView1_PriceLabel0“”><b><font color=“”#FF3300“” size=“”4“”>1457СЂ</font></b></span>&#13; &#13;“,,
”<span id=“”ctl00_ContentPlaceHolder1_FormView1_PriceLabel“”><b><font color=“”#FF3300“” size=“”4“”>1824СЂ</font></b></span>&#13; &#13;",,

Отредактировано Kobalt (Апрель 3, 2012 16:19:51)

Офлайн

#5 Апрель 3, 2012 16:16:43

Kobalt
Зарегистрирован: 2012-04-02
Сообщения: 8
Репутация: +  -1  -
Профиль   Отправить e-mail  

Scrapy-problem

Народ ну обясните, не понимаю!!! Задаю значение
l.add_xpath('price', '//td/span/b/span/h2/spanх@id=“ctl00_ContentPlaceHolder1_FormView1_PriceLabel0”]/text()')
проверяю его на правильность в firepath, все находит правильно
а когда запускаю консоль, не происходин ничего
2012-04-03 19:00:49+0600 DEBUG: Crawled (200) <GET http://aitea.ru/CaiDa
n/Cha/item.aspx?PageID=1119> (referer: None)
2012-04-03 19:00:49+0600 INFO: Closing spider (finished)

Что я делаю не так?

Офлайн

#6 Апрель 3, 2012 16:18:14

Kobalt
Зарегистрирован: 2012-04-02
Сообщения: 8
Репутация: +  -1  -
Профиль   Отправить e-mail  

Scrapy-problem

Почему при точном указании поля не парсится значение?

Офлайн

#7 Апрель 3, 2012 18:32:57

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Scrapy-problem

Kobalt, вы мое сообщение читали?

reclosedev
Сначала думал, что можно по id'ам ориентироваться (id=“ctl00_ContentPlaceHolder1_FormView1_PriceLabel0”), но они на разных страницах меняются.

Вариант с
'(//h2/span/text())[1]'
должен работать

Офлайн

#8 Апрель 3, 2012 19:25:11

Kobalt
Зарегистрирован: 2012-04-02
Сообщения: 8
Репутация: +  -1  -
Профиль   Отправить e-mail  

Scrapy-problem

Как корректно написать?
price_xpath = '(//h2/span/text())'
l.add_xpath('price', price_xpath)
Интерпритатор такую запись не воспринимает(((

Офлайн

#9 Апрель 3, 2012 19:49:10

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Scrapy-problem

Проверил в консоли Scrapy, оказывается нужно //text(), хотя в XPath Helper1.0.8 и старый вариант работает.

l.add_xpath('price', '(//h2/span//text())[1]')
l.add_xpath('coll', '(//h2/span//text())[2]')
Если ‘coll’ - это сбор, то 2 -> 3

Отредактировано reclosedev (Апрель 3, 2012 19:51:58)

Офлайн

#10 Апрель 3, 2012 19:59:15

Kobalt
Зарегистрирован: 2012-04-02
Сообщения: 8
Репутация: +  -1  -
Профиль   Отправить e-mail  

Scrapy-problem

помогло! СПАСИБО!
кстати а как на python 2.6 поставить графический интерфейс среды программирования, ато както сидет под консолью скучновато

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version