无法从网址获取其他内容

时间:2014-04-08 21:41:12

标签: regex python-2.7 xpath scrapy

我正在从this site抓取一些项目,但它仅从第一个产品中抓取项目,并且不会进一步循环。我知道我做的是一个简单的愚蠢的错误,但如果你能指出我弄错了什么,我会很感激。

这是蜘蛛:

from scrapy.item import Item, Field
from scrapy.spider import BaseSpider
from scrapy.selector import Selector
import re 

from zoomer.items import ZoomerItem


class ZoomSpider(BaseSpider):
    name = "zoomSp"
    allowed_domains = ["zoomer.ge"]
    start_urls = [
        "http://zoomer.ge/index.php?cid=35&act=search&category=1&search_type=mobile"
    ]

    def parse(self, response):
        sel = Selector(response)
        titles = sel.xpath('//div[@class="productContainer"]/div[5]')
        items = []
        for t in titles:
            item = ZoomerItem()
            item["brand"] = t.xpath('//div[@class="productListContainer"]/div[3]/text()').re('^([\w, ]+)')
            item["price"] = t.xpath('//div[@class="productListContainer"]/div[4]/text()').extract()[0].strip()
            item["model"] = t.xpath('//div[@class="productListContainer"]/div[3]/text()').re('\s+(.*)$')[0].strip()

            items.append(item)

        return(items)   

P.S。也无法获得“品牌”字符串的正则表达式,只能从字符串中获取第一个单词“Blackberry”:

“BlackBerry P9981保时捷设计”。

1 个答案:

答案 0 :(得分:3)

<div/>的{​​{1}}元素只是一个容器,只出现一次,因此不会重复。要迭代的重复元素是具有类productContainer的重复元素。

productListContainer

这个功能未经测试,因为我不是一个蟒蛇人,所以你可能不得不摆弄一下。