wkhzwmr

css选择器组成

规则由两部分组成:选择器以及一条或多条声明。
主要讲选择器的相关用法(这在爬虫时候足够用了)
这个讲解主要是用在bs4中的css选择器;至于pyquery可以看这个

元素选择器

选取html中的元素,如p,div;
.select(\'p\')
实例

soup = BeautifulSoup(html_sourse,\'lxml\')
element = soup.select(\'p\')
print(element,type(element)) # <class \'bs4.element.ResultSet\'>

类选择器

.class;div.class
实例

#  <class \'bs4.element.ResultSet\'>
lei = soup.select(\'.ir___QwEG\') # 这样所选的话并不会把含有该类的标签打印出来,就是不打印div标签,下方打印
print(\'选取所有该类的元素\',lei,type(lei))
div_lei = soup.select(\'div.ir___QwEG\') # 中间不用空行
print(\'选取所有该类的元素\',div_lei,type(div_lei)) # <class \'bs4.element.ResultSet\'>

ID选择器

与类选择器不同之处在于ID选择器是以"#"开头

select_id = soup.select(\'#backtop\')
select_a_id = soup.select(\'a#backtop\')
print(select_id,type(select_id)) # <class \'bs4.element.ResultSet\'>
print(select_a_id,type(select_a_id)) # <class \'bs4.element.ResultSet\'>

属性选择器

如果希望选择有某个属性的元素,则可以使用属性选择器,不仅局限于id和class属性。
如:target属性

# 报错,貌似bs4中的select无法使用css3新增的属性选择器
# TypeError: select() missing 1 required positional argument: \'selector\'
select_attr = soup.select(target="_blank") # 选择所有含有target属性的元素
# select_attr_val = soup.select(\'target="_blank"\') # 选择所有含有target="_blank"的元素

既然无法用,那就讲解下,属性选择器符号的运用(target是html标签中的属性,同理也可为其他属性)

[target~="_blank"]选择属性target包含 _blank的元素
[target^="_blank"]选择属性target以 _blank开头的元素
a[target] 选择所有含有target属性的a的元素

后代选择器;采用空格

element_houdai = soup.select(\'p input\')# 选择所有p元素下的所有input元素
print(element_houdai,type(element_houdai)) # <class \'bs4.element.ResultSet\'> 

子元素选择器;采用大于号 >

element_son = soup.select(\'p>input\') # 选择所有p元素下的所有input子元素
print(element_son,type(element_son))  # <class \'bs4.element.ResultSet\'> 

相邻兄弟选择器;采用加号 +

element_brother = soup.select(\'p+a\') # 选择紧跟在p元素后面的所有兄弟a元素
print(element_brother,type(element_brother)) # <class \'bs4.element.ResultSet\'> 

按效果实现来说后代选择器和子元素选择器很像

bs4一般一开始的使用

bs4创建<class \'bs4.BeautifulSoup\'>对象的方法

from bs4 import BeautifulSoup
f = open(\'test.html\',\'r\',encoding=\'utf-8\')
html_sourse = f.read()
f.close()
# 直接通过字符串进行创建
soup = BeautifulSoup(html_sourse,\'lxml\')

# 通过打开文件来创建
soup1 = BeautifulSoup(open(\'test.html\',encoding=\'utf-8\'))
print(soup1.prettify())
print(type(soup),type(soup1)) # <class \'bs4.BeautifulSoup\'> <class \'bs4.BeautifulSoup\'>

bs4的其他资料https://www.cnblogs.com/wkhzwmr/p/15230635.html

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-28
  • 2018-05-13
猜你喜欢
  • 2022-02-08
  • 2021-05-11
  • 2022-12-23
  • 2021-08-03
  • 2021-12-15
  • 2021-07-22
  • 2021-11-30
  • 2022-03-05
相关资源
相似解决方案