python不能<a> tag</a>的特定xpath

时间:2014-01-13 21:18:46

标签: python python-2.7 xpath scrapy

请从firebug看这张图片

enter image description here

我想在<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。但似乎没有,因为我得到了空洞的结果。

任何帮助?

1 个答案:

答案 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扩展