css语法简单介绍
" * " 选择所有节点
" # container " 选择id为container的节点
" .container " 选择class包含container的节点
"li a " 选择 所有 li 下的所有 a 节点
“ul + p” 选择所有ul后面的第一个p元素
“#container > ul” 选择id为container的第一个ul节点
"a[class] " 选取所有有class属性的a元素
“a[href=“http://b.com”]” 含有href="http://b.com"的a元素
"a[href*=‘job’] " 包含job的a元素
"a[href^=‘https’] " 开头是https的a元素
“a[href$=‘cn’]” 结尾是cn的a元素
css用法实例
-
response.css(“title ::text”).extract_first(’’) # 获取文本 ‘Example
website’ -
response.css("#images ::attr(href)").extract # 获取 id= images
下的所有href属性 [‘image1.html’, ‘image2.html’, ‘image3.html’,
‘image4.html’, ‘image5.html’] -
response.css(‘a[href*=image]::attr(href)’).extract # 获取所有包含 image 的
href 属性 [‘image1.html’, ‘image2.html’, ‘image3.html’, ‘image4.html’,
‘image5.html’] -
response.css("#images a")[0].css("::attr(href)").extract #
css选取第一个a标签里面的href属性 [‘image1.html’]
a的相关用法
• response.css(‘a’):返回的是selector对象;
• response.css(‘a’).extract():返回的是a标签对象;
• response.css(‘a::text’).extract_first():返回的是第一个a标签中文本的值;
• response.css(‘a::attr(href)’).extract_first():返回的是第一个a标签中href属性的值;
• response.css(‘a[href*=image]::attr(href)’).extract():返回所有a标签中href属性包含image的值;
• response.css(‘a[href*=image] img::attr(src)’).extract():返回所有a标签下image标签的src属性;
xpath语法简单介绍
实例:
import parsel
text = '''
<li class="li li-first">
<a href="link.html" img="jaxkbasjgglksjdlkjsdlkfjd.jpg">first item</a>
</li>
'''
sel = parsel.Selector(text)
#contains()方法,第一个参数传入属性名称,第二个参数传入属性值,只要此属性包含所传入的属性值,就可以完成匹配。
list1 = sel.xpath('//li[contains(@class,"li")]/a/text()').extract()
print(list1) #['first item']
list2 = sel.xpath('//li/a/@img').extract()
print(list2) #['jaxkbasjgglksjdlkjsdlkfjd.jpg']
list3 = sel.xpath('//li/a/@href').extract()
print(list3) #['link.html']