parsel库中css选择器的用法(一些小tips

import parsel 
import requests
url='https://www.baidu.com'
response=requests.get(url)
selector=parse.Selector(response.text)
#选择所有元素
selector.css('*')
#选择article元素
html=selector.css('article')
#选择id为container的元素
selector.css('#container')
#选取所有div下所有a元素
selector.css('div a')
#提取标签title列表
title1=selector.css('title').get() #返回字符串(->extract_first())
title2=selector.css('title').getall() #返回列表(->extract())
#提取标签p中的文本
text=selector
#提取div标签所有文本内容
data=selector.css('div.post-content *::text').getall()
#提取标签里的URL: 标签名::attr(属性明)
url=selector.css('div.port-content img::attr(src)').getall()
#选取所有拥有title属性的a元素
a=selector.css('a[title]').getall()

#选取ul后面第一个p元素
selector.css('ul+p')
#选取与ul相邻的所有p元素
selector.css('ul~p')
#选取下面第二个标签,如果是a的话则选取,不是则不取
selector.css('a:nth-child(2)')
#选取class为multi-chosen的li的所有a元素
selector.css('li.multi-chosen>a')
#选取所有href属性为https://www.123.com/123456.html 的a元素
selector.css('a[href='https://www.123.com/123456.html]')
#选取所有href属性中包含www.123.com的a元素
a[href*='www.lagou.com']
#选取所有href属性值中以http开头的a元素
a[href^='http']
#选取所有id为肺content-container的div:not(#content-container)

直接子节点:>
后代子节点:' '
属性选择:.class; #id; [option=' ']
组选择:,
属性值的首位匹配:^和$
某类型第n个节点: :nth-of-type(n)
某类型倒数第n个节点: :nth-last-of-type(n)
任意类型的第n个节点: :nth-child(n)

CSS选择器中的">"和空格的作用区别:
">"选择器用于选择父元素的直接子元素。它可以确切地匹配父元素下的直接子元素,而不包括孙子元素及其后代元素。这意味着该选择器将仅选择子元素,而不会选择更深层次的子元素。
空格则用于选择指定标签元素下的后辈元素,即作用于所有子后代元素。
总结来说,">"作用于元素的第一代后代,而空格作用于元素的所有后代。

你可能感兴趣的:(css,爬虫)