请从firebug看这张图片
我想在<a>
标记内进行测试。我用过这个:
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('//div[@class="item paid-featured-item"]/div[@class="listing-item"]')
cars = []
for site in sites:
car = CarItem()
car['ATitle']=xpath('.//div[@class="block item-title"]/h3/span[@class="title"]/a/text()').extract()
cars.append(car)
return cars
我想我使用了正确的xpath。但似乎没有,因为我得到了空洞的结果。
任何帮助?
答案 0 :(得分:3)
根据OP的评论:
这可能是你的目标:
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('//div[@class="item paid-featured-item"]/div[@class="listing-item"]')
cars = []
for site in sites:
car = CarItem()
car['ATitle']=site.xpath('.//div[@class="block item-title"]/h3/span[@class="title"]/a/text()').extract()
cars.append(car)
return cars
或者,我看到你正在使用最新的Scrapy版本,所以你可能想尝试一下CSS选择器,这些选择器通常使选择器表达式更易于阅读和维护。
在您的情况下,您可以使用类似
的内容def parse(self, response):
sel = Selector(response)
sites = sel.css('div.paid-featured-item div.listing-item')
cars = []
for site in sites:
car = CarItem()
car['ATitle'] = site.css('div.item-title h3 span.title a::text').extract()
cars.append(car)
return cars
请注意,a::text
语法是CSS选择器的Scrapy扩展