python xpath 简单语法
原创
©著作权归作者所有:来自51CTO博客作者fox64194167的原创作品,请联系作者获取转载授权,否则将追究法律责任
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