ниже пркреплю код который заработал:
файл b2b_spider.py ето сам паук
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.loader.processor import TakeFirst
from scrapy.contrib.loader import XPathItemLoader
from scrapy.selector import HtmlXPathSelector
from b2b.items import OrphanageItem
class OrphanLoader(XPathItemLoader):
default_output_processor = TakeFirst()
class b2bSpider(CrawlSpider):
name = "b2b"
allowed_domains = ["b2binform.ru"]
start_urls = ["http://b2binform.ru/result?c=203&page=1"]
rules = (
Rule(SgmlLinkExtractor(allow=('/result\?c\=203\&page\=')), follow=True),
Rule(SgmlLinkExtractor(allow=('\.html')), callback='parse_item'),
)
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
l = OrphanLoader(OrphanageItem(), hxs)
l.add_xpath('nazva', ".//*[@id='tabs-1']/div[4]/div[1]")
l.add_xpath('adres', ".//*[@id='tabs-1']/div[4]/div[2]")
l.add_xpath('email', ".//*[@id='tabs-1']/div[4]/div[3]")
l.add_xpath('tel', ".//*[@id='tabs-1']/div[4]/div[4]")
l.add_xpath('website', ".//*[@id='tabs-1']/div[4]/div[5]")
l.add_xpath('razdel', ".//*[@id='tabs-1']/div[4]/div[6]")
l.add_xpath('dodat2', ".//*[@id='tabs-1']/div[4]/div[7]")
l.add_xpath('dodat3', ".//*[@id='tabs-1']/div[4]/div[8]")
#l.add_value('url', response.url)
return l.load_item()а ето файл с уже готовым шаблоном xPatch путей, я правда парсил толкьо до уровня дивов, ибо там так организован сайт, что например в "див4" то емейл то телефон, зависит от количества указаных даных)