Просмотр поста

.
_endrju_

ниже пркреплю код который заработал:
файл 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" то емейл то телефон, зависит от количества указаных даных)