python xpath 简单语法

1.例子

item['price'] = response.xpath('//span[@class="p-price"]/span[2]/text()').extract_first()
 

1.//开头表示如果我们不想定义它的父元素,就用//表示
2.匹配具体的属性值,这里是class=p-price的
3.xpath一级级用/来
4.[2] 表示第二个元素,xpath中第一个是1,不是0
5.获取标签内的文字用text()

2.例子2

item['color'] = response.xpath('//div[@id="choose-attr-1"]/div[@class="dd"]/div[contains(@class, \'item\')]/@data-value').extract()

1.如果有2个class,你只指定了一个class是无法匹配的,要用到contains进行匹配
2.属性用@xx, 比如图片的data-value,用@data-value

3.例子3

items = response.xpath('//div[@id="plist"]/ul/li[@class="gl-item"]')
        for product in items:
            item = JdsplashItem()
            item['price'] = product.xpath('.//strong[@class="J_price"]/i/text()').extract_first()
            # item['price'] = product.css('.J_price i::text').extract_first()
            item['img_url'] = product.css('.p-img img::attr("src")').extract_first()
            yield item

1. 如果div和li之间还有ul,也要写上,不能之间用//div[@id="plist"]/li[@class="gl-item"]来匹配,xpath是一层一层来解析的
2. 循环的时候,如果是从父元素开始匹配,要用.//, 不能用//,//是全局的

http://www.codeblogbt.com/archives/61894

 

猜你喜欢

转载自blog.csdn.net/fox64194167/article/details/80470702