我正在从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保时捷设计”。
答案 0 :(得分:3)
类<div/>
的{{1}}元素只是一个容器,只出现一次,因此不会重复。要迭代的重复元素是具有类productContainer
的重复元素。
productListContainer
这个功能未经测试,因为我不是一个蟒蛇人,所以你可能不得不摆弄一下。